2009-03-08 14 views

答えて

5

正規表現*は、ゼロ文字の文字列、または隣接する文字間に何もない文字列との間で正常に一致します。

あなたのパターンは括弧内のゼロ文字と一致しており、その直後にゼロ文字がマッチしています。

正規表現が/f(.*)\1/の場合、 'f'と最初の 'o'の間の文字列 "foo"と一致します。

.*の代わりに.+を使用すると、0以上ではなく1つ以上と一致する可能性があります。 (。+を使用すると 'foo'の 'oo'と一致する必要があります)

+0

、/ F( 。*)\ 1 /は 'foo'にマッチします。スターが貪欲であるからです。しかしそれはちょうど「f」にもマッチします。 –

0

\ 1は後でやり直したり、あなたはちょうど(。*)を使うべきです、これはあなたに必要な結果を与え、自動的に後方参照番号1が与えられます。私は正規表現の専門家ではありませんが、これは私の限られた知識に基づく私の考えです。

本当に起こっていることを見てみると、私はいつもRegexBuddyに戻ります。

+0

意図は、テキストの2つの行に現れた文字列に一致することでした。そのためには\ 1が機能します。 – Mnebuerquo

+0

これは意味があります。 Regexの私の限られた知識は、もう一度見せてくれる! –

0

\ 1が "再一致"命令です。質問はあなたが再試合をするためにすぐにしたいんです(例えば、BLABLA

/(.+)\1/ 

以降(例えば、BLAエヘンBLA

実際
/(.+).*\1/