2016-09-22 99 views
1

我想写一个查找所有字符串的正则表达式,看起来“animals。*”在'*'位置可以是任何符号,但不能是'大象'。正则表达式排除一个词

结果应该是:

输入:animals.fox =>结果:animals.fox

输入:animals.kitten =>结果:animals.kitten

但是

输入:animals.elephant =>结果:无

我写了一个正则表达式,但它不能正常工作。如何解决它?

animals\.(?!elephant) 
+1

你的意思是你需要将单词匹配到最后?试试['animals \。(?!elephant)\ w +'](https://regex101.com/r/pT3cL6/1) –

+1

@WiktorStribiżew下载和使用? – nowox

回答

2

看来,唯一的问题是.后的词匹配。您使用的前视图是零宽度断言,它不会将匹配的字符放入输出中,它只会检查当前位置右侧的文本是否与其模式不匹配。如果匹配,则匹配失败。否则,它只是返回true。所以,你需要消耗这个字后.

在你的模式的末尾添加[a-zA-Z]+\w+(取决于你需要匹配,只能是字母或字母/数字/下划线的):

animals\.(?!elephant)\w+ 

regex demo