是否有正则表达式在句子中找到两个不同的单词?

时间:2009-02-06 13:18:46

标签: visual-studio regex string search find

是否有正则表达式在句子中找到两个不同的单词?对于在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

另请参阅此相关question

7 个答案:

答案 0 :(得分:9)

真实的话:

\bA\b.+\bB\b|\bB\b.+\bA\b

答案 1 :(得分:3)

“* * A. B. * | *。* B. A. *” 如果你想要正确的单词,你可以在单词A和B周围添加空格。

答案 2 :(得分: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");

答案 3 :(得分:0)

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

请注意在A和B之间使用'+'。这是为了确保你在单独的A和B上匹配。如果这不是一个要求,那么ŁukaszLew的答案是正确的。

更新:根据布莱恩的优秀观察结果改变如下。上述表达式将识别A与B分离(反之亦然),在两个感兴趣区域之间至少有一个空白字符(空格,制表符或换行符)。

答案 4 :(得分:0)

正则表达式

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

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

没那么复杂。

答案 5 :(得分:0)

您正在寻找的正则表达式是这样的:

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

这也是案例无效,可以应用于多行的文字。

http://regexr.com/

进行了测试

答案 6 :(得分:-1)

尝试搜索正则表达式存储库regexlib