如何使用正则表达式匹配两个案例?

时间:2011-04-23 05:01:30

标签: regex

给出一个句子,

  

Scheme 这样一个奇怪的编程语言

因此,包含islanguage的任何句子都应返回true。我发现|表示or,但找不到任何符号表示and

谢谢,

5 个答案:

答案 0 :(得分:3)

尝试以下正则表达式:

\bis\b.*\blanguage\b

如果两个单词完全以该顺序出现,则此匹配将匹配。 \ b(单词边界)表示单词是独立的。

答案 1 :(得分:3)

你可以使用这个成语。

(?=expr)

例如,

(?=.*word1)(?=.*word2)

有关详细信息,请参阅this threads

答案 2 :(得分:0)

有点难看,但它应该有用(无论'是'和'语言'是如何订购的):

(.*is.*language.*|.*language.*is.*)

答案 3 :(得分:0)

在c#中(我知道你没有问过c#,但它说明了如何更快地完成这项工作)......

 string s = "Scheme is such a bizarre programming language.";
 if ((s.Contains(" is") || s.Contains("is ")) &&  
     (s.Contains(" language") || s.Contains("language ")))
 {
    // found match if you got here
 }

正在阅读代码的人可能很难解析正则表达式。简单的字符串匹配通常更快。

编辑:这不关心单词的顺序,只适用于简单的空格

答案 4 :(得分:0)

如果你不关心句子中单词的顺序,试试这个:

\bis\b.*\blanguage\b|\blanguage\b.*\bis\b