正则表达式:不匹配已经是单词的一部分的字符串

时间:2015-07-06 19:41:25

标签: python regex

这听起来很简单,所以我想我可能会遗漏一些东西。

假设我想使用正则表达式匹配字符串“cat”,我可以这样做,但是,我不想匹配“连接”例如,或任何其他包含“cat”的单词,我只想要“猫”。

我将如何实现这一目标?我考虑过以下内容:

(CAT|Cat|cat|)( )*

但这似乎无法正常工作。如果“Cat”是句子/行中的第一个单词,我无法在任何一侧添加空格。

有没有办法使用正则表达式排除字符?像“不是A-z”或“猫”的任何一方“0”?

2 个答案:

答案 0 :(得分:3)

尝试字边界:

/\bcat\b/gi

Demo

word boundary\b是一个zero-length assertion,它主要查找单词后跟非单词字符,反之亦然(\w\W|\W\w|^\w|\w$)。

答案 1 :(得分:2)

你可以使用单词边界:

\bcat\b

如果您只想禁用某些字符,请使用lookarounds:

(?<![a-zA-Z0-9])cat(?![a-zA-Z0-9])