我試圖在下面的字符串中找到所有短代碼標簽對,但是當我使用這個正則表達式模式時,所有嵌套在其他短代碼標簽對中的短代碼標簽對都被忽略了\[sc(.*?)-(.*?) var=`(.*?)`\]((.|\r\n)*?)\[\/sc\1-\2\]這是我正在搜索的字符串<ul> [sc1-s-foreach var=`Trip/Day 1`] <li><b>Event</b> <ul> <li> <b>What:</b> [sc1-s-foreach-g var=`What`][/sc1-s-foreach-g] </li> <li> <b>How:</b> [sc1-s-foreach-g var=`How`][/sc1-s-foreach-g] </li> <li> <b>When:</b> [sc1-s-foreach-g var=`When`][/sc1-s-foreach-g] </li> <li> <b>Where:</b> [sc1-s-foreach-g var=`Where`][/sc1-s-foreach-g] </li> </ul> </li> [/sc1-s-foreach]</ul>
2 回答

慕尼黑的夜晚無繁華
TA貢獻1864條經驗 獲得超6個贊
我想你正在尋找這樣的東西
\[sc(.*?)-(.*?)(?:-.*?)?[ ]var=`(.*?)`\]((?:(?!\[\/sc\1-\2(?:-.*?)?\])[\S\s])*?)\[\/sc\1-\2\]
https://regex101.com/r/4Tv2Js/1

慕桂英3389331
TA貢獻2036條經驗 獲得超8個贊
我從 Quora 得到了一個回答說
您將需要使用遞歸。并非所有語言在其正則表達式實現中都有遞歸。
例如,在 PHP 中,您可以使用以下正則表達式來匹配括號內的文本,包括嵌套括號:
\(([^()]|(?R))*\)
匹配一個起始括號
\(
匹配任意數量的:
不是括號的字符
[^()]
整個正則表達式
(?R)
匹配一個結束括號
\)
- 2 回答
- 0 關注
- 228 瀏覽
添加回答
舉報
0/150
提交
取消