2

文中の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

この関連する質問も参照してください

4

7 に答える 7

9

本当の言葉の場合:

\bA\b.+\bB\b|\bB\b.+\bA\b
于 2009-02-06T13:43:55.530 に答える
3

".*A.*B.*|.*B.*A.*" 適切な単語が必要な場合は、単語 A と B の前後にスペースを追加できます。

于 2009-02-06T13:25:49.810 に答える
0

複雑な正規表現ではなく、ブール論理を使用しないのはなぜですか?

テストされていないコード:

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");
于 2009-02-06T13:24:50.623 に答える
0

正規表現

次の正規表現は、文字列にすべての単語が含まれている場合にのみ、文字列全体と一致します: all your words here. 他の単語を簡単に追加したり、既存の単語を削除したりできます。

(?=.*?\ball\b)
(?=.*?\byour\b)
(?=.*?\bwords\b)
(?=.*?\bhere\b)
.*

それほど複雑ではありません。

于 2012-08-31T21:31:35.853 に答える
0

.*A.*\s.*B.*|.*B.*\s.*A.*

A と B の間の「+」の使用に注意してください。これは、A と B を別々に一致させるためです。これが要件でない場合は、Łukasz Lew の回答が正しいです。

更新: 以下の Bryan の優れた観察に従って変更されました。上記の式は、関心のある 2 つの領域の間に少なくとも 1 つの空白文字 (スペース、タブ、または改行) がある B から分離された A (またはその逆) を認識します。

于 2009-02-06T13:38:07.833 に答える
0

探している正規表現は次のようなものです。

/word1.*(?=word2)|word2.*(?=word1)/igm

これも大文字と小文字を区別せず、複数行のテキストに適用できます。

http://regexr.com/でテスト済み

于 2014-04-12T21:38:48.840 に答える
-1

正規表現リポジトリであるregexlibを検索してみてください。

于 2009-02-06T13:22:46.383 に答える