は続いており、この場合には、私が唯一の第三リアルに一致するようにしたいです。私は先読みregex:なぜこのネガティブな先読みが機能しないのですか?私は今、私は<code>::</code>せずに本当のものと一致し、この</p> <pre><code>real:: a real :: b real c </code></pre> <p>のようなテキストが欲しいいる
real\s*(?!::)
で正規表現を試してみました。しかし、これは\s*
のために
real :: b
real c
に一致するreal :: b
が一致している理由は、ゼロ個以上の\s
を意味? Wiktor第Stribiżewへ
更新
感謝。 regex101デバッグツールを使用します。 backtrack
が複雑になることがわかります。
私は似ていますが、私は再び
real (xx(yy)) :: a
real (zz(pp)):: b
real (cc(rr)) c
を解決することはできません別のタスクを思い付いた、私は::
次のようなしているreal (cc(rr))
をマッチさせたいです。
real\s*\(.*?\)+(?!\s*::)
これは私が試したものですが、失敗しました。正規表現のデバッグを見て、それはまたバックトラックのためです。しかし、これを正しく行う方法は?
OKでない何かに続いてゼロスペースを
real
のマッチングですが、私の正規表現が失敗なぜあなたは説明できますか? – user15964先読みの外側にある '\ s * 'が2番目のケースと一致する理由を説明し、プロセスを示すregex101のグラフを追加しました。 –
@ user15964アサーションは「ネガティブルックアヘッドアサーション」です。これは、コンテンツが配置された場所の直後にコンテンツが表示されないことを主張します。 –