正则表达式 - 与和运算符匹配的行

时间:2014-01-06 18:42:14

标签: regex

我有一些文字:

  

大红狐狸。哪不是蓝狐。但是红色的狐狸不再快。

基本上我想匹配“红色”和“狐狸”都按顺序出现的句子和另一个不按顺序出现的正则表达式。

我该怎么做?

3 个答案:

答案 0 :(得分:1)

假设句子中没有带点的缩写:

任何订单:

(?=[^.!?]*fox)(?=[^.!?]*red)[^.!?]+[.!?]

在“狐狸”之前为“红色”:

[^.!?]*?red[^.!?]+?fox[^.!?]*[.!?]

答案 1 :(得分:1)

对于“狐狸”之后的“红色”:

\b[^.?!]+red.*?fox[.?!]+

对于“红色”之后的“狐狸”:

\b[^.?!]+fox.*?red[.?!]+

捕捉所有其他句子,除了“狐狸”之后的“红色”:

(?:\b[^.?!]+red.*?fox[.?!]+)(.*?[.?!]+)

当你使用Javascript时,不要忘记使用g修饰符来捕获所有出现的内容:

/\b[^.?!]+red.*?fox[.?!]+/g

Online demo

答案 2 :(得分:0)

假设每个句子出现在一个单独的行中,您可以这样做:

  

I want to match sentences where "red", "fox" both appears in that order

您可以使用:

^.*?red.*?fox.*$
  

I want to match sentences where "red", "fox" both appears in ANY order

您可以使用positive lookahead

^(?=.*?red)(?=.*?fox).*$