3

単語の配列の 0 または 1 が文字列に存在するかどうかをチェックする正規表現を持つことが可能かどうかを知りたいです。複数のエントリの排他的論理和...

文字列に 0 または 1 のみを含めることができる単語:

次の文は、次の結果を与えるはずです。

  1. これは美しい日です => 一致 (単語の 0)
  2. 今朝はお元気ですか?=> 一致 (単語の 1 つ)
  3. 今朝、夜でした!=> 一致しない (単語の 1 つ)
  4. This Night, we will have a great Morning => 一致しません (2 語以上)

ご協力ありがとうございました!

4

1 に答える 1

1

編集:

純粋な正規表現ソリューションは、次のようなものでなければなりません。

string words = string.Join("|", yourWordsArray);
string regex = "^(?!.*\b(" + words + ")\b.*\b(" + words + ")\b).*\b(" + words + ")\b.*$";

/編集

あなたが求めているのは、「1つ以上の一致がないすべての文字列を見つける」ことです。.Net では、次のような構造を持つことができるため、これはかなり簡単です。

return !(Regex.Matches("your text", "your regex").Count > 1)

あなたの正規表現は次のようになります:`

string regex = string.Join("|", yourWordsArray);

すべてのコードの中で最も美しいわけではありませんが、さらに悪い可能性があります

于 2013-10-31T09:27:46.420 に答える