正则表达式将P3(x)属性值替换到对应P2(x)位置的方案求助
调整方案
方案1(支持可变长度后行断言的引擎,如PCRE、Python re等)
正则表达式:
(?<=P2 x=")[^"]+(?=".*?P3 x="([^"]+)")
- 匹配逻辑:仅精准定位P2节点的x属性值本身,不会匹配周边固定字符串,通过前向断言捕获同组P3的x属性值到分组1
- 替换规则:直接填写
$1即可完成替换,无需额外拼接任何固定字符,完全满足你的使用要求。
方案2(兼容所有主流正则引擎)
正则表达式:
(P2 x=")[^"]+(".*?P3 x="[^"]+")
- 分组说明:
- 分组1:匹配固定前缀
P2 x=",替换时原样保留 - 分组2:匹配P3节点完整的属性前缀与x值,替换时原样保留
- 匿名捕获的P3 x值可通过
\1/$1调用
- 分组1:匹配固定前缀
- 替换规则:填写
$1$2即可完成替换,无需手动拼接标签前缀。
效果验证
原数据第一行P2节点<P2 x="4,29731" y="0,26315"/>替换后变为<P2 x="5,29731" y="0,26315"/>,第二行P2节点<P2 x="5,97398" y="0,26315"/>替换后变为<P2 x="5,30731" y="0,26315"/>,完全符合需求。
内容的提问来源于stack exchange,提问作者Machine
相关产品推荐
相关产品推荐

