亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何告訴正則表達式不要忽略嵌套匹配?

如何告訴正則表達式不要忽略嵌套匹配?

PHP
嚕嚕噠 2022-01-02 20:20:49
我試圖在下面的字符串中找到所有短代碼標簽對,但是當我使用這個正則表達式模式時,所有嵌套在其他短代碼標簽對中的短代碼標簽對都被忽略了\[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


查看完整回答
反對 回復 2022-01-02
?
慕桂英3389331

TA貢獻2036條經驗 獲得超8個贊

我從 Quora 得到了一個回答說

您將需要使用遞歸。并非所有語言在其正則表達式實現中都有遞歸。

例如,在 PHP 中,您可以使用以下正則表達式來匹配括號內的文本,包括嵌套括號:

    \(([^()]|(?R))*\)
  • 匹配一個起始括號 \(

  • 匹配任意數量的:

    • 不是括號的字符 [^()]

    • 整個正則表達式 (?R)

  • 匹配一個結束括號 \)


查看完整回答
反對 回復 2022-01-02
  • 2 回答
  • 0 關注
  • 228 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號