正则表达式:替换单词,除非后跟破折号

时间:2016-06-24 12:30:30

标签: php regex preg-replace

如何用“FELIX”替换给定字符串中的“cat”,但如果后面跟着“ - 或_或:”这样的特殊字符

示例:

“我的猫一直都很饿”=> “我的菲利克斯一直都很饿”

“产品cat-1547和cat:154现在是令人失望的”  => “产品cat-1547和cat:154现在是令人失望的”

感谢

2 个答案:

答案 0 :(得分:0)

使用负向前瞻和字边界:

/\bcat\b(?![-:])/

请参阅regex demo

模式说明

  • \b - 引导字边界(以避免在cat中匹配tomcat
  • cat - 文字字符串cat
  • \b - 尾随字边界(即下一个字符必须是非字母,非数字和非下划线字符,并且它阻止匹配cat中的catwalk
  • (?![-:]) - 否定前瞻如果-: 立即跟随{{1} }。

PHP demo

cat

答案 1 :(得分:0)

在python中你可以:

(cat)(?![-:])

?检查表达式后面跟着的是什么?!