正则表达式/ Preg:如果找到则不匹配

时间:2012-09-16 14:44:27

标签: php regex preg-replace bbcode

我正在尝试做一些PHP preg。但是,如果我想要一个没有东西的字符串,我似乎无法让它匹配。

示例:

Hello! My name is [b]Peter Jack[/b]

如果找到彼得杰克的姓氏,那么它将不匹配,但如果发现“[b]彼得[/ b]”,它将匹配。

任何我在解释事情方面都不好的人,如果还有什么需要帮我解决这个问题,请发表评论。


我可以说的另一种方式是,如果我有一个链接到网站,它将匹配并在preg_replace中执行这些操作,但如果指向网站的链接以.png(图像)结尾,则将不会匹配,也不会建立链接。

example.com/image.png

不会匹配,因为它包含.png

example.com/image

将匹配,因为包含.png

1 个答案:

答案 0 :(得分:2)

目前还不清楚你想要找到什么。如果它只是[b]Peter[/b],那么您不需要正则表达式。

如果要查找由BBCode粗体标记包围的单个“单词”,请使用

preg_match('%\[b\]\w*\[/b\]%', $subject)

如果您想在BBCode粗体标签内找到任何内容,只要它不包含Jack,请使用

preg_match(
    '%\[b\]     # Match [b]
    (?:         # Try to match...
     (?!Jack)   # (unless the word "Jack" occurs there)
     .          # any character
    )*?         # any number of times, as few as possible
    \[/b\]      # Match [/b]%x', 
    $subject)