正则表达式应用两个lookbehind标准

时间:2014-11-04 19:58:13

标签: regex conditional-statements lookbehind

我在单独的行上有一个小写单词列表。我想匹配包含字母'r'的所有行,其中它不是'e'(呃),NOR是'fo'(for)。

以下是一个示例清单:

fortnight
reject
forrest
fourteen
certain
forester
heretofore
example

以下是我想要匹配的字词:

reject
forrest
fourteen

以下是两个正则表达式,每个表达式都是我想要的一半:

^(.*((?<!e)r).*)$
^(.*(r(?<!fo)r).*)$

第一个匹配除“确定”之外的所有单词;除了“两周”之外的第二个所有单词,所以我想要的单词是匹配的。但是,同时包含'for'和'er'以及没有其他'r'的单词也是匹配的。在另一个之后应用一个正则表达式无法消除误报。

如何将两个正则表达式与AND条件组合在一起,以便两者都应用于一个表达式中?

2 个答案:

答案 0 :(得分:1)

您可以使用简单的替换

^\w*(?<!e|fo)r\w*$

例如http:http://regex101.com/r/mW5qZ9/6

它的作用是什么?

(?<!e|fo)断言正则表达式不是由efo

提出的

r匹配字符r

正则表达式匹配

fourteen
reject

答案 1 :(得分:0)

的正则表达式:

这适用于大多数版本的RegEx \w*(?<!e|fo)r+.*\w