正規表現で文字列を解析しようとしています。clean の前に最初の部分を取得する必要があります&
。クリーンにはその前後&
がありません。+
掃除 &:
- 47&78
- a+bc&gsd+f
きれいでない &:
- fA+&71
- 昼寝&+sys
Matisse+&+Sadko&sendtemp=1
正規表現は を返す必要がありますMatisse+&+Sadko
。
私はそのようにしようとしましたが、うまくいきません:
.*(?!\+)&(?!\+).*
ありがとう。
正規表現で文字列を解析しようとしています。clean の前に最初の部分を取得する必要があります&
。クリーンにはその前後&
がありません。+
掃除 &:
きれいでない &:
Matisse+&+Sadko&sendtemp=1
正規表現は を返す必要がありますMatisse+&+Sadko
。
私はそのようにしようとしましたが、うまくいきません:
.*(?!\+)&(?!\+).*
ありがとう。
は(?!...)
(負の) 先読み式で、次の文字が一致する (一致しない) かどうかをチェックします。したがって、正規表現にその 1 文字を追加する必要があり&
ます+
。
(?!\+).&(?!\+)
しかし、それには . の前に少なくとも 1 文字が必要&
です。(負の) 後読みを使用することをお勧めします。
(?<!\+)&(?!\+)
詳細については、正規表現ルックアラウンドを参照してください。
&
文字列の先頭または末尾にない場合は、否定された文字クラスを使用することもできます。
.*[^+]&[^+].*
...または、可能であれば、それをオプションにしましょう:
^(?:.*[^+])?&(?:[^+].*)?$
ですから、否定的な先読みを見るのは良いことですが、タスクはもっと (!) シンプルです。
[somesymbols]
- これは、正規表現が受け入れるシンボルのグループです。
[^somesymbols]
- これはシンボルのグループであり、正規表現は受け入れません。
だから、これを書くだけです:[^+]&[^+]
あなたの文字列をフィルタリングする