問題タブ [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.
regex - pcregrep Regex の正の先読みが機能しないのはなぜですか?
pcregrep を使用して正規表現を作成しましたが、正の先読みを追加するまで、すべてが期待どおりに動作しました。
シナリオ:
次のテキストファイルがあります。
ゴール:
pcregrep で Regex を使用して、キャプチャされていない行を含む行と、それらの間に含まれるa
行を含む行を返したいと思います。したがって、最初の 3 行 ( 、、 ) をキャプチャし、最初の ( ) と 3 番目の ( ) 行を返します。4 番目と 5 番目の行の間には線がないため、これらの行はキャプチャされません。したがって、出力は次のようになります。c
b
a
b
c
a
c
b
私が試したこと
pcregrep -M 'a\nb\nc\n'
(コマンド 1 )を実行すると、次のものがキャプチャされて返されます。
予想通り。b
そこで、これを変更して、前向きな先読みで行を捉えたいと思います。私はこれを試しました:(pcregrep -M 'a\n(?=(b\n))c\n'
コマンド2)。ただし、これは何も返しません。
私の質問:
コマンド 1では返されるのに、コマンド 2では期待される出力が返されないのはなぜですか? どうすれば目的の結果を返すことができますか? 以外にもこれを行う方法があることは知っていますが、同様の問題を解決するために機能を拡張するので、使用したいことに注意してください。pcregrep
pcregrep
ありがとう!