通过正则表达式匹配 BBCode 内容和属性

Matching BBCode content and attribute via regex

我在一个较旧的项目中使用 PECL BBCode class 来管理 BBCode,效果很好。对于某些特殊情况,这还不够,因为我需要 运行 一个输入函数。所以我想在 PECL 事情 运行nning.

之前用正则表达式来做这个

我想匹配 [member]-tag 有和没有属性:

[member]Donald Duck[/member]
[member=Dr. Donald Duck]Donald Duck[/member]

我可以这样搭配:

\[member\](.+?)\[\/member\]
\[member=(.+?)\](.+?)\[\/member\]

如何一步完成?我使 = 可选与 ?但两者都不匹配。感谢您的支持。

您应该将 = 添加到可选组:

\[member(=.*?)?](.+?)\[\/member]
        ^^^^^^^

regex demo

详情

  • \[member - 文字 [member 子串
  • (=.*?)? - 第 1 组:= 的可选序列,然后是换行字符以外的任何 0+ 个字符,尽可能少
  • ] - ] 字符(无需转义)
  • (.+?) - 第 2 组:除换行字符外的一个或多个字符,尽可能少
  • \[\/member] - 文字 [/member] 子字符串。