为什么这个正则表达式会忽略其余的匹配?

时间:2014-06-06 22:28:43

标签: php regex replace

我希望匹配 pony 字的所有匹配项,但在这些情况下除外:

  • [URL = 小马 .COM]的小马 [/ URL]
  • [网址]的小马 .COM [/ URL]

在综合中,匹配应为:

  

pony en pony [url = pony.com] pony [/ url],tambiéntengoque pony [url = pony.com ] pony [url],y no olvidar a [url] pony.com [/ url]

为了实现这个目标,我创建了这个正则表达式:

(?!\[url[^\]]*?\])(pony)(?![^\[]*?\[\/url\])

但是,出于某种原因,匹配如下:

  

小马 zh_cn 小马 [url = pony.com] pony [/ url],tambiéntengoque pony [url = 小马 .com] 小马 [url],y no olvidar a [url] pony.com [/ url]

为什么会这样?我的想法首先是找到正确的事件,然后用php替换它们。

1 个答案:

答案 0 :(得分:4)

它符合以下条件,因为您缺少正斜杠。

  

小马 zh_cn 小马 [url = pony.com] pony [/ url],tambiéntengoque pony [url = 小马 .com] 小马 [url],y no olvidar a [url] pony.com [/ url]

                                                                   ^ missing '/'

添加斜杠并且有效,请参阅live demo