案文是:
some text here x"/get/me/out/of/here.png"
如何在双引号之间获取所有内容?
这似乎不起作用:
if ($text =~ /".+?"/) {
print"found: $1\n";
}
感谢。
答案 0 :(得分:12)
您需要$1
,所以围绕.+?
包裹括号:
$text = 'foo "bar baz" mu';
if ($text =~ /"(.+?)"/) {
print"found: $1\n";
}
打印:
bar baz
或使用$&
抓取整场比赛("bar baz"
:包括双引号):
if ($text =~ /".+?"/) {
print"found: $&\n";
}
答案 1 :(得分:5)
与往常一样,只要您认为正则表达式是最佳解决方案(偶尔也可能是这样),快速前往CPAN可能会找到更好的东西。在这种情况下Text::Balanced
。有extract_delimited
或extract_quotelike
函数可以在指定的引号之间提取文本。
请仔细阅读说明,因为它有用但可能是意外的行为。但是它非常有用,特别是如果你不得不重复提取。