用于shortcode/bbcode的正则表达式(pcre)



我有一个正则表达式(请参阅https://regex101.com/r/mB7vQ8/2):

/[content_box((.*?)!?])(.*?)[/content_box]/ig

用于匹配文本中的所有[content_box](带或不带标签参数),如:

[content_boxes foo=bar][content_box baz=foo]text[/content_box][/content_boxes]
[content_box]text[/content_box]
[content_box foo=bar]text[/content_box]

我的正则表达式有效,但如果[content_box]包含在[content_boxes]中,则规则将无法匹配(强):

[content_boxes foo=bar][content_box baz=foo]text[/content_box][/content_bboxes]

[content_box]text[/content_box]

[content_box-foo=bar]text[/content_box]

预期匹配为:

[content_boxes foo=bar][content_box-baz=foo]text[/content_box][/content_bboxes]

[content_box]text[/content_box]

[content_box-foo=bar]text[/content_box]

在线查看https://regex101.com/r/mB7vQ8/2

如何解决?

您可以将此正则表达式与单词边界一起使用:

~[content_boxbs*([^]]*)](.*?)[/content_box]~

RegEx演示

这里content_boxb将不匹配content_boxes,并且匹配将始终是内部[content_box ..]标签。

最新更新