所以我认为这只是一个简单的问题,但是我得到了错误的结果。基本上,我正在尝试删除字符串周围的引号。例如,我有字符串"01:00",我想要的是01:00,下面是我认为我能够完成此操作的代码:
$expected_start_time = $conditions =~ m/(\"[^\"])/;
每次运行它都会返回1,所以我猜它只是返回true而没有实际从引号中提取字符串。无论引号中是什么,如“02:00”,“02:20”,“08:00”等。
你忘记在左手边加上圆括号将匹配结果放入列表环境中,以返回子匹配组。通常的做法是:
($expected_start_time) = $condition =~ /"([^"]*)"/;
看起来你知道第一个和最后一个字符是引号。如果是这样的话,使用
$expected_start_time = substr $conditions, 1, -1;
不需要使用正则表达式。
$expected_start_time = $conditions;
$expected_start_time =~ s/"//g;
m/(\"[^\"])/
要捕获开头引号和其后的非引号字符。要捕获双引号之间的非引号字符,您需要使用某种变体:
m/"([^"]*)"/;
"
不是特殊字符,不需要加引号,但这样做也没有坏处。 - Christoffer Hammarström
\"
),有时甚至还提供特殊的转义(例如\x20
)。但是这些解决方案都没有处理这个问题,因此它们都不太可能正确。但是您没有提供足够的信息来做得更好。 - ikegami