我在较旧的项目中使用PECL BBCode类来管理BBCode,效果很好。在某些特殊情况下,这是不够的,因为我需要在输入上运行一个函数。因此,我想在运行PECL之前使用正则表达式执行此操作。
我想将[member] -tag与具有和没有属性匹配:
[member]Donald Duck[/member]
[member=Dr. Donald Duck]Donald Duck[/member]
我可以这样匹配他们:
\[member\](.+?)\[\/member\]
\[member=(.+?)\](.+?)\[\/member\]
如何一步一步做到这一点?我将=设为?但两者都不匹配。谢谢您的支持。
答案 0 :(得分:1)
您应将=
添加到可选组:
\[member(=.*?)?](.+?)\[\/member]
^^^^^^^
请参见regex demo
详细信息
\[member
-文字[member
子字符串(=.*?)?
-第1组:可选的=
序列,然后是除换行符以外的任何0+字符,且数量尽可能少]
-一个]
字符(无需转义)(.+?)
-第2组:一个或多个除换行符以外的其他字符,并且尽可能少\[\/member]
-文字[/member]
子字符串。