是否有正则表达式在句子中找到两个不同的单词?对于在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
答案 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
这也是案例无效,可以应用于多行的文字。
进行了测试答案 6 :(得分:-1)
尝试搜索正则表达式存储库regexlib。