为了账号安全,请及时绑定邮箱和手机立即绑定

正则表达式匹配由起始词和结束词分隔的单词前后的多行

正则表达式匹配由起始词和结束词分隔的单词前后的多行

ABOUTYOU 2024-01-11 16:47:22
我想要搜索{{ upc }}并开始捕获,不是从<div比赛开始前开始,而是从<div比赛开始前的第二个开始<div class="form-group">,即捕获不是到</div>比赛后的第一个,而是从第二个开始,即结束</div>或下一个开始时<div class="form-group">(取决于你如何看待它)这是我想要搜索和替换的示例 HTML/Twig 模板。<div class="form-group">    <label class="col-sm-2 control-label" for="input-sku"><span data-toggle="tooltip" title="{{ help_sku }}">{{ entry_sku }}</span></label>    <div class="col-sm-10">        <input type="text" name="sku" value="{{ sku }}" placeholder="{{ entry_sku }}" id="input-sku" class="form-control"/>    </div></div><div class="form-group">     <label class="col-sm-2 control-label" for="input-upc"><span data-toggle="tooltip" title="{{ help_upc }}">{{ entry_upc }}</span></label>     <div class="col-sm-10">         <input type="text" name="upc" value="{{ upc }}" placeholder="{{ entry_upc }}" id="input-upc" class="form-control"/>     </div></div><div class="form-group">     <label class="col-sm-2 control-label" for="input-ean"><span data-toggle="tooltip" title="{{ help_ean }}">{{ entry_ean }}</span></label>     <div class="col-sm-10">         <input type="text" name="ean" value="{{ ean }}" placeholder="{{ entry_ean }}" id="input-ean" class="form-control"/>     </div></div>预期的正则表达式匹配如下:<div class="form-group">     <label class="col-sm-2 control-label" for="input-upc"><span data-toggle="tooltip" title="{{ help_upc }}">{{ entry_upc }}</span></label>     <div class="col-sm-10">         <input type="text" name="upc" value="{{ upc }}" placeholder="{{ entry_upc }}" id="input-upc" class="form-control"/>     </div></div>感谢所有帮助。谢谢。
查看完整描述

2 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

您可以尝试的一件事是使用否定前瞻来过滤掉您不希望包含在匹配中的内容。例如,匹配 a <div,后跟任何内容,然后再匹配另一个<div,可以匹配诸如 之类的内容<div></div><div>

相反,您可以说的是匹配<div,然后是任何内容(只要不是</div>),然后是另一个<div

<div    (?:(?!</div>).)*    <div

然后,您可以在表达式中通常写入 的任何位置插入相同的子模式.*。在这种特殊情况下,您可以重复该操作,以确保您没有在 之前点击结束 div UPC然后继续该{{ UPC }}部分。

<div(?:(?!</div>).)*<div    (?:(?!</div>).)*    {{ upc }}    .*?</div>\s*</div>

这是一个演示


查看完整回答
反对 回复 2024-01-11
?
慕的地8271018

TA贡献1796条经验 获得超4个赞

您需要解析div所需的 ,然后吸收其中的所有内容并排除其余内容。

[\w\W]表示匹配单词和非单词。例如,它匹配换行符,但事实*并非如此。

[\w\W]*(<div[\w\W]*?<div[\w\W]*?{{ sku }}[\w\W]*?<\/div>[\w\W]*?<\/div>)[\w\W]*


查看完整回答
反对 回复 2024-01-11
  • 2 回答
  • 0 关注
  • 130 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信