2017-02-23 9 views
3

正規表現でNOT LIKE条件1 OR条件2 OR条件3同値を実行しようとしています。私は1だからフレーズにRSISTA0NOT LIKEを作成する必要があります。条件1または条件2または条件3をRegexで等価にします。

が含まれていないすべての文字列を検索し^((?!RSISTA0).)*$を書くことができると結論付けました。このスレッドhereから部分文字列RSBO,RRABO,RSISTA0

のいずれかを含むないを行い、すべての文字列を検索します

^((?!RSBO).)*$|^((?!RRABO).)*)$|^((?!RSISTA0).)*$ 

を、その後私は|操作は、おそらくなければならないことを考え出し:私は満たされなければならない三つの条件を持っているとき、私の要件のために私が試しました同等。

(?=^((?!RSBO).)*$)(?=^((?!RRABO).)*)$(?=^((?!RSISTA0).)*$) 

これは、しかし、私はそこにあることを知っているにもかかわらず、私はまったくの文字列を返さないために発生します。このために私はこれが私に解決策を与えた1がAND操作を模倣することができhere

を見つけましたフィルタリングする必要のある部分文字列を含まない文字列です。

誰にも分かりませんか?

答えて

2

あなたは近くにいます。あなたはこのような否定先読みで除外するように単語を配置する必要があります。

^(?:(?!RSBO|RRABO|RSISTA0).)*$ 

それはRSBORRABOまたはRSISTA0を含む任意の単語と一致しませんが、他のテキストと一致します。

See the demo

+0

ありがとうございました!私は使用しているプログラムでこのソリューションをテストしたところ、完全に機能します!私はこの簡単な解決策を得ることは想像もしませんでした。 :) – Cenderze

1
^((?!RSBO)(?!RSISTA0)(?!RRABO).)*$ 

私は、これはトリックを行うと信じています。 regex101で成功を収めた。おそらくすべてのキャラクターを見ているのでおそらく非効率ですが、私はこのようなやり方を見つけることができません。

編集:最初の肯定的な見方が必要だったとは思わないので、元の回答から削除しました。

関連する問題