2011-08-16 24 views
2

これは単純ですが、&文字は1回だけ検索する必要がありますが、&&のインスタンスは一件も見つかりません。&&を見つける正規表現&&

正規表現の正確な説明は非常に役立ちます。

+0

正直な正規表現を使っている人は誰でも私からupvoteを得ました。 :) ...誰もが答えを削除しました...;) – Mikaveli

答えて

3

あなたは風味を指定していないが、それはあなたが使用することができますlookbehindsサポートしている場合:

(?<!&)&(?!&) 

不可解な外観にもかかわらず、パターンは非常に簡単です:

  • (?<!&) - 現在の位置を確認してくださいは、アンパサンドの後にです。
  • & - ...アンパサンドと一致します。
  • (?!&) ...アンパサンドの前にはないことを確認してください。
+0

+1負のルックアラウンドは私のソリューションよりも簡単です – stema

1
[^&]&[^&] 

何か他のものが続く&続い&ではない何か、、、。

あなたの表現がライン/入力/表現/文字列の先頭や末尾にすることができた場合は、さらに2つの可能性があります

^&[^&] 
[^&]&$ 

今、あなたはORとそれらを組み合わせることができます。

3

あなたはhere online on Regexr

あなたは何&前または開始がないことを確認する必要があり、それを参照してください

([^&]|^)&([^&]|$) 

か、私より美しく使用前後参照に

(?<=[^&]|^)&(?=[^&]|$) 

を行うことができます文字列の先頭または末尾には&がないことを確認します。

[^&]は、いずれかの非&文字または文字列の先頭(^

[^&]|$試合はいずれかの非&文字または末尾&

[^&]|^試合以外のものと一致する意味、否定文字クラスであります文字列の($

(?<=pattern)アサーションを見て、確実にpattern

(?=pattern)が主張先読みする前に、あるpattern

私の最初の、私の第二の溶液であるとの違いを以下であることを保証し、最初のものは前の文字にマッチすると、今後、第二の溶液はゼロである策を見て使用しています幅のアサーションは、文字にマッチしないことを意味します。

+0

+1詳細な説明をありがとうございます。 :) – Mikaveli

1

&でないか、または左右どちらもないものがある&を見つける必要があります。

だから、式は次のようになります。

([^&]|^)&([^&]|$) 

最初のグループは&または行の先頭ではない文字にマッチします。次に、文字&があり、2番目のグループは、&または行末ではない文字と一致します。

+1

&は行の先頭または最後ではないので、 '[^&]&[^&]'のみ一致しますか? – Mikaveli

+2

はい、 '&'の前後に文字が必要です。 –

関連する問題