首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Regex lookaround将HTML插入到特定位置的字符串中

使用Regex lookaround将HTML插入到特定位置的字符串中
EN

Stack Overflow用户
提问于 2019-08-23 08:28:50
回答 1查看 34关注 0票数 0

我正在使用一个自动生成的HTML菜单(由WordPress生成),并尝试使用preg_replace和regex lookaround技术将HTML代码片段插入到菜单代码中的特定位置。

我对使用正则表达式进行匹配非常陌生。我尝试使用前视和后视的组合来匹配菜单代码中的特定位置,但在让它出现在我想要的确切位置上遇到了一些麻烦。

这就是我到目前为止所拥有的:https://regex101.com/r/thq6rK/1

代码语言:javascript
复制
(?=<\/li><li id=.*?mega-menu )

HTML菜单代码在示例regex101编辑器中,如果我没记错的话,应该只有一个匹配(即使在HTML中使用了两个class="mega- menu“实例。

我试图用"mega-menu“类来定位每个<li>'s实例之前的位置,并在前面关闭的实例之前直接插入一个自定义的<div class="custom-class"></div>

很抱歉,这有点难以解释。下面是一个例子。

我感兴趣的部分:

代码语言:javascript
复制
</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>):

代码语言:javascript
复制
</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">

谢谢你能给我的任何帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-23 09:02:13

你已经很接近了。将.*?更改为[^>]*,这样就不会在多个元素之间进行匹配。

您认为使用非贪婪的regexp应该使它找到最短的匹配。但贪婪只适用于右侧,而不适用于左侧。*尽可能快地开始匹配;当它贪婪时,它匹配与其余模式一致的最长重复,当它非贪婪时,它匹配最短重复。

https://regex101.com/r/thq6rK/2

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57618466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档