通过正则表达式匹配 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]
^^^^^^^
详情
\[member
- 文字 [member
子串
(=.*?)?
- 第 1 组:=
的可选序列,然后是换行字符以外的任何 0+ 个字符,尽可能少
]
- ]
字符(无需转义)
(.+?)
- 第 2 组:除换行字符外的一个或多个字符,尽可能少
\[\/member]
- 文字 [/member]
子字符串。
我在一个较旧的项目中使用 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]
^^^^^^^
详情
\[member
- 文字[member
子串(=.*?)?
- 第 1 组:=
的可选序列,然后是换行字符以外的任何 0+ 个字符,尽可能少]
-]
字符(无需转义)(.+?)
- 第 2 组:除换行字符外的一个或多个字符,尽可能少\[\/member]
- 文字[/member]
子字符串。