0

正規表現で文字列を解析しようとしています。clean の前に最初の部分を取得する必要があります&。クリーンにはその前後&がありません。+

掃除 &:

  • 47&78
  • a+bc&gsd+f

きれいでない &:

  • fA+&71
  • 昼寝&+sys

Matisse+&+Sadko&sendtemp=1正規表現は を返す必要がありますMatisse+&+Sadko

私はそのようにしようとしましたが、うまくいきません:

.*(?!\+)&(?!\+).*

ありがとう。

4

2 に答える 2

3

(?!...)(負の) 先読み式で、次の文字が一致する (一致しない) かどうかをチェックします。したがって、正規表現にその 1 文字を追加する必要があり&ます+

(?!\+).&(?!\+)

しかし、それには . の前に少なくとも 1 文字が必要&です。(負の) 後読みを使用することをお勧めします。

(?<!\+)&(?!\+)

詳細については、正規表現ルックアラウンドを参照してください。

&文字列の先頭または末尾にない場合は、否定された文字クラスを使用することもできます。

.*[^+]&[^+].*

...または、可能であれば、それをオプションにしましょう:

^(?:.*[^+])?&(?:[^+].*)?$
于 2012-07-27T09:51:02.507 に答える
1

ですから、否定的な先読みを見るのは良いことですが、タスクはもっと (!) シンプルです。
[somesymbols]- これは、正規表現が受け入れるシンボルのグループです。
[^somesymbols]- これはシンボルのグループであり、正規表現は受け入れません。
だから、これを書くだけです:[^+]&[^+]あなたの文字列をフィルタリングする

于 2012-07-27T09:51:23.480 に答える