私の正規表現パターンは次のようになります
<xxxx location="file path/level1/level2" xxxx some="xxx">
私が興味があるのは、location に割り当てられた引用符で囲まれた部分だけです。貪欲なスイッチを使わずに、以下のように簡単にできるのではないでしょうか?
/.*location="(.*)".*/
動作しないようです。
ベストアンサー1
"(.*)"
デフォルトでは はすべてに一致するため、正規表現を lazy/non-greedy にする必要があります"file path/level1/level2" xxx some="xxx"
。
代わりに、ドットとスターを非貪欲にすることができます。これにより、一致する文字ができるだけ少なくなります。
/location="(.*?)"/
?
量指定子 ( ?
、*
または) に を追加すると、+
非貪欲になります。
注意: これは、Perl 5 拡張機能を実装する正規表現エンジン (Java、Ruby、Python など) でのみ使用可能であり、「従来の」正規表現エンジン (のないAwk sed
、などを含む) では使用できません。grep
-P