【问题标题】:Substitute one group with another group; Followup question用另一组代替一组;后续问题
【发布时间】:2021-12-24 06:28:59
【问题描述】:

我将指的是这个线程: Substitute one group with another group

我想做的是将 P1(y) 的值放入 P4(y),
最终结果:(...) <P4 x="-0,36935" y="0,26315"/>

我之前的问题类似,似乎需要一种全新的方法。 不幸的是,我找不到可靠的解决方案。

工作示例: https://regex101.com/r/iua3p0/2

<P1 x="-0,36935" y="0,26315"/><P2 (...)/><P3 (..)/><P4 x="-0,36935" y="-0,40351"/>
<P1 x="4,64065" y="0,26315"/><P2 (...)/><P3 (..)/><P4 x="4,64065" y="-0,40351"/>

【问题讨论】:

    标签: regex notepad++ substitution


    【解决方案1】:

    要将 P1(y) 的值放入同一行的 P4(y) 中,您可以使用:

    <P1[^>]*\hy="([^"]+)"[^>]*>.*?<P4[^>]*\hy="\K[^"]+(?=[^>]*>)
    

    模式匹配:

    • &lt;P1[^&gt;]* 匹配 &lt;P1&gt; 以外的可选字符
    • \hy=" 匹配一个空格和y="
    • ([^"]+)组 1 中捕获除 " 以外的字符
    • "[^&gt;]*&gt; 匹配"&gt; 以外的可选字符,然后匹配&gt;
    • .*? 匹配尽可能少的字符
    • &lt;P4[^&gt;]*\hy=" 匹配&lt;P4&gt; 以外的可选字符,然后匹配空格和y="
    • \K[^"]+ 清除匹配缓冲区,然后匹配您要删除的内容,在这种情况下,除了" 之外还有 1+ 个字符
    • (?=[^&gt;]*&gt;) 正向超前断言右侧的 &gt;

    并使用$1替换为组1

    查看regex demo

    注意,要使用否定字符类不匹配跨行,您可以使用 [^"\r\n][^&gt;\r\n]* 排除匹配的换行符

    【讨论】:

      猜你喜欢
      • 2021-12-23
      • 1970-01-01
      • 2014-09-05
      • 1970-01-01
      • 2019-08-14
      • 2018-10-05
      • 2013-07-11
      • 1970-01-01
      • 2022-01-03
      相关资源
      最近更新 更多