文字列「abcdefgh」を指定して、「abcde」で始まり「fgh」で終わらないすべての文字列に一致させるにはどうすればよいですか?
より一般的なタスク - 特定の一般的なパターンで始まるが、事前定義された (除外) パターンで終わらない文字列に一致します。
"\babcde(^fgh)\b"
動作しません
必要なプレフィックスと除外されたサフィックスが重複しない場合は、負の先読みを使用できます。「文字列」とは、「単語」を意味すると思います。
"\babcde(?!\w*fgh\b)"
接頭辞と接尾辞が重なる可能性がある場合は、先読みを前に移動します
"\b(?!\w*fgh\b)abcde"
「文字列」が「文字列」を意味する場合は、^
と$
を境界条件として使用します。
"^(?!.*fgh$)abcde"
文字列をテストするだけでなく、一致を取得したい場合は、「文字列の残りの部分」を正規表現に含めます。
"^(?!.*fgh$)abcde.*$"
次の正規表現を使用できます。
^foo(?!.*bar$).*$
foo
で始まり、で終わらないすべての文字列に一致しますbar
。
この部分は、文字列がおよび で^foo
始まることを保証します。foo
この部分(?!.*bar$)
は、文字列が で終わらないようにするための否定先読みアサーションbar
です。