問題タブ [pcregrep]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
323 参照

regex - pcregrep Regex の正の先読みが機能しないのはなぜですか?

pcregrep を使用して正規表現を作成しましたが、正の先読みを追加するまで、すべてが期待どおりに動作しました。

シナリオ:

次のテキストファイルがあります。

ゴール:

pcregrep で Regex を使用して、キャプチャされていない行を含む行と、それらの間に含まれるa行を含む行を返したいと思います。したがって、最初の 3 行 ( 、、 ) をキャプチャし、最初の ( ) と 3 番目の ( ) 行を返します。4 番目と 5 番目の行の間には線がないため、これらの行はキャプチャされません。したがって、出力は次のようになります。cbabcacb

私が試したこと

pcregrep -M 'a\nb\nc\n'(コマンド 1 )を実行すると、次のものがキャプチャされて返されます。

予想通り。bそこで、これを変更して、前向きな先読みで行を捉えたいと思います。私はこれを試しました:(pcregrep -M 'a\n(?=(b\n))c\n'コマンド2)。ただし、これは何も返しません。

私の質問:

コマンド 1では返されるのに、コマンド 2では期待される出力が返されないのはなぜですか? どうすれば目的の結果を返すことができますか? 以外にもこれを行う方法があることは知っていますが、同様の問題を解決するために機能を拡張するので、使用したいことに注意してください。pcregreppcregrep

ありがとう!