我正在使用自動生成的 HTML 菜單(由 WordPress 生成),并且我正在嘗試使用 preg_replace 和 regex 環(huán)視技術(shù)將 HTML 片段插入菜單代碼中的特定位置。我對使用正則表達式進行匹配很陌生。我嘗試使用前瞻和后視的組合來匹配菜單代碼中的特定位置,但在讓它出現(xiàn)在我想要的確切位置時遇到了一些麻煩。這是我到目前為止所擁有的:https : //regex101.com/r/thq6rK/1(?=<\/li><li id=.*?mega-menu )HTML 菜單代碼在示例 regex101 編輯器中,如果我是對的,應(yīng)該只有一個匹配項(即使在 HTML 中使用了兩個 class="mega-menu" 實例。我試圖<li>'s在類“mega-menu”的每個實例之前找到該位置,并<div class="custom-class"></div>在前面的 closed 之前直接插入自定義。我很抱歉,這有點難以解釋。這是一個例子。我感興趣的塊:</li></ul></li></ul></li><li id="menu-item-26880" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children mega-menu has-picture has-picture-2 menu-item-26880 nav-item">我想如何工作(換行符只是為了更好地顯示插入的<div>):</li></ul></li></ul><div class="custom-class">This would be inserted</div></li><li id="menu-item-26880" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children mega-menu has-picture has-picture-2 menu-item-26880 nav-item">感謝您為我提供的任何幫助。
1 回答

鳳凰求蠱
TA貢獻1825條經(jīng)驗 獲得超4個贊
你很接近。更改.*?
為[^>]*
使其不會跨多個元素匹配。
您認為使用非貪婪的正則表達式應(yīng)該可以找到最短的匹配項。但是貪婪只適用于右邊,而不適用于左邊。*
盡快開始匹配;當它貪婪時,它匹配與模式其余部分一致的最長重復(fù),當它不貪婪時,它匹配最短重復(fù)。
https://regex101.com/r/thq6rK/2
- 1 回答
- 0 關(guān)注
- 220 瀏覽
添加回答
舉報
0/150
提交
取消