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_delimitedor関数があります。extract_quotelike

便利ですが、おそらく予期しない動作があるため、指示を注意深く読んでください。ただし、特に繰り返し抽出を行う必要がある場合は、非常に便利です。

于 2011-08-28T12:12:43.377 に答える