0

みたいな表現を見つけた

\((.*?)\) 

(text)のような括弧付きの括弧内のテキストを見つけるのに適しています

^((?!.*(word1|word2|word3)).*)+

word4abcdのような特定の単語を含まず、たとえば word1 testを含まないテキストを検索する

それらをマージして、これらの単語を含まない括弧内のテキストを検索する方法 in (example)および not like (example word2) ?

前もって感謝します

4

3 に答える 3

1

最初の正規表現は、消極的な量指定子*?を使用して、最初に利用可能な閉じ括弧が開き括弧の後に一致することを確認します。2 番目の正規表現は、ゼロ幅の負の先読みグループ ((?!...)構造) を使用して、特定の単語の一致を防ぎます。これらのトリックを組み合わせるために、次のようなものを見ています。

\(((?!something).*?)\)

問題は、の代わりに何が入るかsomethingです。単にそこに置くだけ.*(word1|word2)では機能しません。これも禁止word1またはword2括弧の外になります。.*by に置き換えて.*?も、それは変わりません。機能するのは、またはの後に続く[^)]*(word1|word2)文字と等しくない任意の文字列に一致するものです。)word1word2

結果の式は次のとおりです。

\(((?![^)]*(word1|word2)).*?)\)

word1orを含まないブラケット式に一致しますword2

于 2013-09-29T12:51:50.233 に答える
0

多分これはあなたが望むものですか?

^\(((?!.*word1)(\S)*)|(\3)\)

一致: (wordwordexample) 不一致: (単語 wordexample) (word1wordexample)

于 2013-09-29T12:50:40.370 に答える
0

質問はあまり明確ではありませんが、役立つ例を挙げています。

この正規表現を見てください:

/\((?!.*?\bexample\s+word\b[^)]*\)).*?\bexample\b.*?\)/

exampleこれは、角括弧内の単語に一致します。example word角括弧内にno がない場合、一致が発生します。

\bは単語境界に使用されているため、examples代わりに一致しません。

于 2013-09-29T12:31:33.763 に答える