3

我想知道是否有可能有一个正则表达式来检查字符串中是否存在单词数组中的 0 或 1。具有多个条目的异或...

字符串可以包含 0 或仅包含 1 的单词:

  • 早晨
  • 晚上
  • 夜晚

以下句子应给出以下结果:

  1. 这是美好的一天 => 匹配(0 个单词)
  2. 你今早好吗 ?=> 匹配(单词中的 1 个)
  3. 今天早上,是晚上!=> 不匹配(单词中的 1 个)
  4. 这个晚上,我们将度过一个美好的早晨 => 不匹配(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 回答