2017-10-15 486 views
0

我想匹配任何包含单词“name”和“Richard”(按此顺序)前面没有单词“hello”的字符串。正则表达式:如何排除前缀字符串?

正则表达式应该匹配
我的名字叫理查德
名理查德


但它不应该匹配
你好,我的名字是理查德
#hello,我的名字叫理查德
理查德名字


我试过以下的正则表达式,但它们不能正常工作
(^你好)名*理查德
(。。? <!你好)。*名称*理查德
(?< = ^你好)。*名称*理查德


感谢您的帮助

回答

2

使用单一的正则表达式:

^((?<!hello).)*name.*Richard 

发挥它在regex101

应对@Mateus评论:是的,这正则表达式匹配name hello my name is Richard。您可以防止匹配:

^((?<!hello).)*name((?!name).)+Richard 

检查这一项上regex101为好。

+0

你的正则表达式匹配“姓名你好,我的名字是理查德”,是否应该匹配? – Mateus

+0

您应该将此问题提交给OP。我正在根据他的例子回答这个问题。它至少不符合“我的名字叫理查德”这个名字。 –

+0

这就是我需要的,非常感谢Marc! :-) – fandetv