テキストは次のとおりです。
some text here x"/get/me/out/of/here.png"
二重引用符の間のすべてを取得するにはどうすればよいですか?
これはうまくいかないようです:
if ($text =~ /".+?"/) {
print"found: $1\n";
}
ありがとう。
テキストは次のとおりです。
some text here x"/get/me/out/of/here.png"
二重引用符の間のすべてを取得するにはどうすればよいですか?
これはうまくいかないようです:
if ($text =~ /".+?"/) {
print"found: $1\n";
}
ありがとう。
が必要な$1ので、括弧で囲みます.+?:
$text = 'foo "bar baz" mu';
if ($text =~ /"(.+?)"/) {
print"found: $1\n";
}
プリント:
bar baz
または$&、一致全体を取得するために使用します ( "bar baz": 二重引用符を含む):
if ($text =~ /".+?"/) {
print"found: $&\n";
}
いつものように、Regex が最善の解決策だと思うときはいつでも (時にはそうなるかもしれません)、CPAN に簡単にアクセスすると、より良い解決策が見つかるかもしれません。この場合Text::Balanced。指定された引用符の間のテキストを抽出するextract_delimitedor関数があります。extract_quotelike
便利ですが、おそらく予期しない動作があるため、指示を注意深く読んでください。ただし、特に繰り返し抽出を行う必要がある場合は、非常に便利です。