所以我认为这只是一个简单的问题,但是我得到的结果不正确.基本上我试图删除字符串周围的引号.例如,我有字符串"01:00",我想要01:00,下面是我认为我能够做到这一点的代码:
$expected_start_time = $conditions =~ m/(\"[^\"])/;
Run Code Online (Sandbox Code Playgroud)
每次运行它返回1,所以我猜它只是返回true而不是实际从引号中提取字符串.无论报价为"02:00","02:20","08:00"等,都会发生这种情况.
tch*_*ist 14
你忘了的只是让LHS把匹配放入列表上下文的parens所以它返回子匹配组.通常的方法是:
($expected_start_time) = $condition =~ /"([^"]*)"/;
Run Code Online (Sandbox Code Playgroud)
Chr*_*röm 10
看来您知道第一个和最后一个字符是引号,所以请使用
$expected_start_time = substr $conditions, 1, -1;
Run Code Online (Sandbox Code Playgroud)
不需要正则表达式.
蛮力的方法是:
$expected_start_time = $conditions;
$expected_start_time =~ s/"//g;
Run Code Online (Sandbox Code Playgroud)
请注意,原始正则表达式:
m/(\"[^\"])/
Run Code Online (Sandbox Code Playgroud)
将捕获开始引号和以下非引号字符。要捕获双引号之间的非引号字符,您需要一些变体:
m/"([^"]*)"/;
Run Code Online (Sandbox Code Playgroud)
这是 Perl(和正则表达式),TMTOWTDI - 有不止一种方法可以做到。