1

正文是:

some text here x"/get/me/out/of/here.png"

我怎样才能得到双引号之间的所有内容?

这似乎不起作用:

if ($text =~ /".+?"/) {
 print"found: $1\n";
}

谢谢。

4

2 回答 2

12

你需要有一个$1,所以用括号括起来.+?

$text = 'foo "bar baz" mu';

if ($text =~ /"(.+?)"/) {
  print"found: $1\n";
}

印刷:

bar baz

或用于$&抓取整个匹配项("bar baz": 包括双引号):

if ($text =~ /".+?"/) {
  print"found: $&\n";
}
于 2011-08-28T11:44:54.270 回答
5

与往常一样,只要您认为 Regex 是最好的解决方案(有时可能是),快速访问 CPAN 可能会发现更好的东西。在这种情况下Text::Balanced。有extract_delimitedorextract_quotelike函数可以提取指定引号之间的文本。

仔细阅读说明,因为它有一些有用但可能是意想不到的行为。但是,它可能非常有用,尤其是在您必须进行重复提取的情况下。

于 2011-08-28T12:12:43.377 回答