Perl 正则表达式匹配双引号之间的所有内容?

发布于 2024-12-02 07:22:13 字数 205 浏览 0 评论 0原文

文本是:

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

如何获取双引号之间的所有内容?

这似乎不起作用:

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

谢谢。

The text is:

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

How can I get everything between the double quotes?

This seems not to work:

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

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

愿得七秒忆 2024-12-09 07:22:13

您需要有一个 $1,因此请用括号括住 .+?

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

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

prints:

bar baz

或使用 $& 来获取整个匹配项 (< code>“bar baz”:包括双引号):

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

You need to have a $1, so wrap parenthesis around.+?:

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

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

prints:

bar baz

Or use $& to grab the entire match ("bar baz": including the double quotes):

if ($text =~ /".+?"/) {
  print"found: 
amp;\n";
}
荒芜了季节 2024-12-09 07:22:13

与往常一样,每当您认为正则表达式是最佳解决方案(有时可能是)时,快速访问 CPAN 可能会为您找到更好的解决方案。在本例中 Text::Balanced。有 extract_delimitedextract_quotelike 函数可以提取指定引号之间的文本。

仔细阅读说明,因为它有有用但可能意想不到的行为。然而,它可能非常有用,特别是当您必须重复提取时。

As always, any time you think that a Regex is the best solution (and occasionally it might be), a quick trip to CPAN may find you something better. In this case Text::Balanced. There is the extract_delimited or extract_quotelike function which will extract text between specified quotes.

Read the instructions carefully, as it has useful but perhaps unexpected behaviors. However it can be very useful, especially if you have to do repeated extractions.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文