我有一些文字:
大红狐狸。哪不是蓝狐。但是红色的狐狸不再快。
基本上我想匹配“红色”和“狐狸”都按顺序出现的句子和另一个不按顺序出现的正则表达式。
我该怎么做?
答案 0 :(得分:1)
假设句子中没有带点的缩写:
任何订单:
(?=[^.!?]*fox)(?=[^.!?]*red)[^.!?]+[.!?]
在“狐狸”之前为“红色”:
[^.!?]*?red[^.!?]+?fox[^.!?]*[.!?]
答案 1 :(得分:1)
对于“狐狸”之后的“红色”:
\b[^.?!]+red.*?fox[.?!]+
对于“红色”之后的“狐狸”:
\b[^.?!]+fox.*?red[.?!]+
捕捉所有其他句子,除了“狐狸”之后的“红色”:
(?:\b[^.?!]+red.*?fox[.?!]+)(.*?[.?!]+)
当你使用Javascript时,不要忘记使用g
修饰符来捕获所有出现的内容:
/\b[^.?!]+red.*?fox[.?!]+/g
答案 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).*$