0

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

例子:

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

如果找到 Peter Jack 的姓氏,它将不匹配,但如果找到“[b]Peter[/b]”,它将匹配。

任何我不太擅长解释的人,如果还有什么需要帮助我解决这个问题,请发表评论。


我可以说的另一种方式是,如果我有一个网站链接,它将匹配并执行 preg_replace 中的内容,但如果该网站的链接以 .png(图像)结尾,它将不匹配并且不会建立链接。

example.com/image.png

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

example.com/image

将被匹配,因为它不包含.png

4

1 回答 1

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)
于 2012-09-16T14:47:52.467 回答