4

複数行のテスト文字列:

dkdkdkdk dkdkdkdk dkdkdkd dkdkdkd "hello" dkdkdkdkdk dkdkdk "goodbye.hello"  dkdkdkd kdkdkd kdkdkdk "hello.goodbye.hello" dddd "test" ssss "http:x-y.f/z/z" "" "."
"http:/dkdkd/dkdkdk/dkdkdkdkdkdk.g"

hello" "を含む引用符で囲まれたすべての文字列に一致させたい

これはすべての引用文字列に一致します

\"(.+?)\"

これは、hello を含むすべての引用符文字列に一致します

\"(.*?)hello(.*?)\"

ただし、これは、hello を含まない引用符で囲まれたすべての文字列と一致するわけではありません

\"(.*?)(?!hello)(.*?)\"

助けてくれてありがとう!

4

2 に答える 2

3

私の最初の答えは、次のように、ドットが一致するたびに否定先読みを適用する必要があるということです。

\"((?!hello).)*?\"

ただし、引用符で囲まれた複数の文字列を含むターゲットでは、この正規表現に問題があります。ある文字列の終了引用符と別の引用符の開始文字列の間のスペースも、この式の「引用文字列」です。

したがって、私の提案は、単純な"[^"]*"パターンを使用してターゲットから引用符で囲まれたすべての文字列を抽出し、許可しない単語の各一致を評価することです。

于 2010-01-05T23:00:53.510 に答える
0

これを試して

\"((?!hello).)*?\"
于 2010-01-05T23:04:51.927 に答える