私は、対応する 'foo'の文字列を 'bar = 1'、 'bar = 2'または 'bar = 3'のいずれかにマッチさせようとしています。一度に1つしか一致しません。複数行とドットで非貪欲な振る舞い
file_header
foo lorem ipsum \pope
24 dolor sit amet, consectetur adipisici elit
Excepteur sint obcaecat cupiditat non
gnu blu bar=1
foo lorem ipsum \
@>@[email protected] consectetur adipisici elit
gnu blu bar=2
foo lorem ipsum
23 dolor sit amet, consectetur adipisici elit
gnu blu bar=3
foo ... etc
私は、単純な^foo.*?bar=2$
から^(?!\bfoo\b.*\bfoo\b).*\bfoo\b.*bar=2$
のようなものに、すべてのものを試してみました。しかし、マルチラインとドットリングを有効にすると、常に最初の 'foo'にマッチするか、ファイルヘッダ全体に印を付けることさえあります。非貪欲な行動ができないように複数行とDOTALLを使用しながら:(
それは、そうです。
だから、['^ foo(?:^ foo | bar = 2 $)。)* bar = 2 $'](https://regex101.com/r/) xM4sX9/1)? –
1)**一致**または**検索**を試みていますか? 2)あなたのエラーを示す短い、完全なプログラムを提供してください。 「私はすべてを試しました」とあなたが考えるほど有用ではないと言っています。代わりに、** complete **プログラムで、あなたが試した特定のものを見せてください。優れた回答を得るための質問の詳細については、[mcve]を参照してください。 –
@Robᵩ私はhttp://pythex.org/で実験していましたが、まだPythonコードはありません。だから、私は一致と検索の違いがあることに気付かなかったのです。 (私は検索が必要です) – CptSausage