从字符串中删除引号

Bra*_*don 6 string perl

所以我认为这只是一个简单的问题,但是我得到的结果不正确.基本上我试图删除字符串周围的引号.例如,我有字符串"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)

不需要正则表达式.


Jon*_*ler 5

蛮力的方法是:

$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 - 有不止一种方法可以做到。

  • Brandon:'"' 不是一个特殊字符,不需要引用,尽管这样做没有坏处。 (4认同)
  • @Brandon:不 - 我的意思是我写的。在正则表达式中,引号没有特殊含义。 (3认同)