我想,以取代所有的<span...>
(包括<span id="...
与<span class="...
由)在HTML<span>
除非由跨度开始<span id="textmarker
(例如我不想把这个跨度:<span attr="blah" id="textmarker">
)
我已经尝试过在这里和这里提出的正则表达式,最后想出了这个正则表达式,它从不返回a,<span id="textmarker
但有时会错过其他范围:
<span(?!.*? id="textmarker).*?">
您可以在这里看到我的(简体)html:https://regex101.com/r/yT9jG2/2
奇怪的是,如果我在notepad ++中运行regex,它将返回3个匹配项(第二段中的三个跨度),但是regex101仅返回1个匹配项。Notepad ++和regex101都错过了第一段的跨度。
此正则表达式也不会返回它应该的所有跨度(请参见此处具有灰色突出显示的跨度
<span(?![^>]*? id="textmarker)[^>]*?>
更新:要排除id="textmarker
包括id="anythingelse
和所有其他span
s,请执行以下操作:
(<span(?! *id="textmarker)[^>]*>)
在您发布的示例上:https : //regex101.com/r/yT9jG2/2,然后在顶部选择version 2
,将字段设置为:
(<span(?! *id="textmarker)[^>]*>)
g
在您的示例中选择version 2
,匹配9并在右侧列出它们,包括空跨度以及非跨度,id="textmarker
例如<span id="YellowType">
栏位1:
(
和)
。出于教育目的,在表达式中添加了一个额外的外部括号,仅用于使用regex101的匹配组列表功能,除了默认的内联突出显示匹配项外,还在右窗格中列出结果。使用Notepad ++时,您当然可以省略这些外(
)
括号。<span
: 火柴 <span
(?!
对以下内容启动否定的超前断言,*
表示空间零次或多次,以防您有多余的空间id="textmarker
)
结束负面的超前断言[^
启动一个排除集。因此not of of the following
,以下是>
]
停止定义排除*
匹配前面的0次或多次。之前的存在[^>]
>
匹配open-a-span标签的结尾领域2
g
告诉regex101您希望这是一个贪婪的比赛本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句