正则表达式嵌套短代码不起作用

时间:2015-02-28 11:26:59

标签: php regex nested shortcode

有人可以告诉我为什么这不起作用? - https://regex101.com/r/hJ5zN6/11

测试字符串:

[test][dzspgb_container][dzspgb_row][dzspgb_row_part part="1.4"][dzspgb_element text="whwaha" type_element="text"][/dzspgb_element][dzspgb_element text="test" type_element="text"][/dzspgb_element][/dzspgb_row_part][dzspgb_row_part part="1.4"][/dzspgb_row_part][dzspgb_row_part part="1.4"][/dzspgb_row_part][dzspgb_row_part part="1.4"][/dzspgb_row_part][/dzspgb_row][dzspgb_container]test second[/dzspgb_container][/dzspgb_container][/thisbreaks]

测试正则表达式:

*\[dzspgb_container(.*?)](.*?)\[\/dzspgb_container\](?!\s*\[\/)*

如果我们从字符串中删除 [/thisbreaks] ,它就会有效。

1 个答案:

答案 0 :(得分:0)

这是因为最后的负前瞻断言。我建议你删除前瞻,并使用如下的贪婪正则表达式。

\[dzspgb_container(.*?)](.*)\[\/dzspgb_container\]

DEMO

(?!\s*\[\/)声明匹配后不会(零个或多个空格字符和[符号