让我的RegEx在NPP中查找/替换工作了几个小时,遇到了一些麻烦。 Here's一些代码了I'm上工作的文件: https://regex101.com/r/kQdy4L/6/ 我的目标是取代所有的 “0>。|。| ...” 按ID名称
测试字符串
location
取代
<movingPart index="0>8|1|3" referencePoint="0>8|1|0|4" referenceFrame="0>" scaleZ="true"/>
bla
bla
<i3dMapping id="KroneComprimaV180XC" node="0>" />
<i3dMapping id="novoGripPart2_fixPoint" node="0>8|1|0|4" />
<i3dMapping id="novoGrip_part2" node="0>8|1|3" />
在发生tial'n´错误后,我得到了此RegEx
<movingPart index="novoGrip_part2" referencePoint="novoGripPart2_fixPoint" referenceFrame="KroneComprimaV180XC" scaleZ="true"/>
bla
bla
<i3dMapping id="KroneComprimaV180XC" node="0>" />
<i3dMapping id="novoGripPart2_fixPoint" node="0>8|1|0|4" />
<i3dMapping id="novoGrip_part2" node="0>8|1|3" />
哪个可以找到节点+ id或仅找到我需要替换的节点,但是我不知道如何替换所有的“ 0>。|。|”。 ID名称
感谢您的帮助,这是我第一次遇到RegEx,所以这一切都让我感到困惑。 干杯佛瑞德
答案 0 :(得分:1)
您可以使用这个正则表达式来为你做的替换:
(?<=(index|Point|Frame)=")([^"]+)(?=".*?id="([^"]+)" node="\2")
它对index="
,Point="
或Frame="
中的一个使用正向后视(注意,我们必须切断reference
,因为后视必须是固定长度) ,后跟一定数量的非{"
字符(该值在组2中捕获),然后正向搜索一个看起来像id="someidvalue" node="\2"
的字符串,其中\2
表示该值较早捕获。值someidvalue
在组3中捕获。
然后您可以替换为$3
。请注意,由于某些原因,Notepad ++不喜欢逐个替换,因此您需要使用Replace All
。
这是regex101.com上的正则表达式演示