2

是否有一个正则表达式可以在一个句子中找到两个不同的单词?在 MS Visual Studio 2008 中工作的表达式的额外功劳:)

例如:

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

正则表达式

以下正则表达式匹配整个字符串,仅当字符串包含所有单词时:all your words here。您可以轻松添加其他单词或删除现有单词。

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

没那么复杂。

于 2012-08-31T21:31:35.853 回答
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

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

请注意在 A 和 B 之间使用“+”。这是为了确保您在单独的 A 和 B 上匹配。如果这不是必需的,那么 Łukasz Lew 的答案是正确的。

更新:根据下面 Bryan 的出色观察进行了更改。上面的表达式将识别 A 与 B 分开(反之亦然),在两个感兴趣区域之间至少有一个空白字符(空格、制表符或换行符)。

于 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 回答