我在单独的行上有一个小写单词列表。我想匹配包含字母'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条件组合在一起,以便两者都应用于一个表达式中?
答案 0 :(得分:1)
您可以使用简单的替换
^\w*(?<!e|fo)r\w*$
例如http:http://regex101.com/r/mW5qZ9/6
它的作用是什么?
(?<!e|fo)
断言正则表达式不是由e
或fo
r
匹配字符r
正则表达式匹配
fourteen
reject
答案 1 :(得分:0)
这适用于大多数版本的RegEx
\w*(?<!e|fo)r+.*\w