文中の2つの異なる単語を見つけるための正規表現はありますか?MS VisualStudio2008で機能する式の追加クレジット:)
例えば:
reg_ex_match(A, B, "A sentence with A and B") = true
reg_ex_match(C, D, "A sentence with A and B") = false
この関連する質問も参照してください
文中の2つの異なる単語を見つけるための正規表現はありますか?MS VisualStudio2008で機能する式の追加クレジット:)
例えば:
reg_ex_match(A, B, "A sentence with A and B") = true
reg_ex_match(C, D, "A sentence with A and B") = false
この関連する質問も参照してください
本当の言葉の場合:
\bA\b.+\bB\b|\bB\b.+\bA\b
".*A.*B.*|.*B.*A.*" 適切な単語が必要な場合は、単語 A と B の前後にスペースを追加できます。
複雑な正規表現ではなく、ブール論理を使用しないのはなぜですか?
テストされていないコード:
public bool reg_ex_match(Regex A, Regex B, string s) {
return A.isMatch(s) && B.isMatch(s);
}
更新: これは、 A と B が単語境界で定義されていることを前提としています。
Regex A = new Regex(@"\bA\b");
次の正規表現は、文字列にすべての単語が含まれている場合にのみ、文字列全体と一致します: all your words here
. 他の単語を簡単に追加したり、既存の単語を削除したりできます。
(?=.*?\ball\b)
(?=.*?\byour\b)
(?=.*?\bwords\b)
(?=.*?\bhere\b)
.*
それほど複雑ではありません。
.*A.*\s.*B.*|.*B.*\s.*A.*
A と B の間の「+」の使用に注意してください。これは、A と B を別々に一致させるためです。これが要件でない場合は、Łukasz Lew の回答が正しいです。
更新: 以下の Bryan の優れた観察に従って変更されました。上記の式は、関心のある 2 つの領域の間に少なくとも 1 つの空白文字 (スペース、タブ、または改行) がある B から分離された A (またはその逆) を認識します。
探している正規表現は次のようなものです。
/word1.*(?=word2)|word2.*(?=word1)/igm
これも大文字と小文字を区別せず、複数行のテキストに適用できます。
http://regexr.com/でテスト済み
正規表現リポジトリであるregexlibを検索してみてください。