2016-12-14 12 views
1

文字列が 'abc'で、式が(?= a)abcであるとすれば、それは単にabcを検索するのと同じではないでしょうか?肯定的なルックアラウンドは、それらを使用しない場合よりも目的を持っていますか?肯定的なルックアラウンドを使用しない場合の目的は何ですか?

+2

A'は常に 'A'ある'として肯定先読みが無意味であること。 *無意味な*探索を使わないでください。 –

+0

「aabc」のように 'a'が先行する場合にのみ、' abc'にマッチする式は何か?私は構文が逆に直感的であることがわかります... –

+0

正式なlookbehind '(?<= a)abc' [ここに小さなテストです]](https://regex101.com/r/y91J1b/1 )、ここにいくつかの[Documentation](http://www.regular-expressions.info/lookaround.html) – juanlu

答えて

2

正の先読みはまったく同じです。 q(?= u)は、qの後にu、と一致し、一致の部分をにしません。正の先読み構造は、かっこのペアで、開始括弧と疑問符と等号が続きます。ここで

http://www.regular-expressions.info/lookaround.html

https://ourcraft.wordpress.com/2009/03/25/positive-examples-of-positive-and-negative-lookahead/


から小さな例である、私はすぐにカンマが続いているすべての単語のテキスト文書から取得してみたいと思います。最初の試みとして

What then, said I, shall I do? You shan't, he replied, do anything.

、私はコンマに続く一つ以上の単語の部分を取得するには、この正規表現を使用できます:私たちは、この例の文字列を使用します

[A-Za-z']+, 

これは、4を得文字列の結果:

then, 
I, 
shan't, 
replied, 

これは、私が削除する必要がありますが、私もカンマを得ることに注意してください。カンマにマッチしない単語とマッチする単語をマッチさせたいと表現できれば、それは良いことではないでしょうか?

我々は行うことができ、次のように私たちの正規表現を変更することによって:

[A-Za-z']+(?=,) 

これは、カンマが続いている単語の文字のグループにマッチしますが、理由は先読みの使用のカンマが一致の一部ではありませんテキスト(ちょうどそうでないように)。これらの試合で修正正規表現の結果:

then 
I 
shan't 
replied 
関連する問題