将一组替换为另一组;跟进问题

Substitute one group with another group; Followup question

我指的是这个话题:

我想做的是将 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"/>

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

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

模式匹配:

  • <P1[^>]* 匹配 <P1>
  • 以外的可选字符
  • \hy=" 匹配 space 和 y="
  • ([^"]+)组 1
  • 中捕获 " 以外的字符
  • "[^>]*> 匹配 "> 以外的可选字符,然后匹配 >
  • .*? 匹配尽可能少的字符
  • <P4[^>]*\hy=" 匹配 <P4> 以外的可选字符,然后匹配 space 和 y="
  • \K[^"]+ 清除匹配缓冲区,然后匹配您要删除的内容,在本例中为 "
  • 以外的 1+ 个字符
  • (?=[^>]*>) 肯定前瞻断言 > 向右

并使用 </code></p> 替换为第 1 组 <p>看到一个<a href="https://regex101.com/r/yxrp2K/1" rel="nofollow noreferrer">regex demo</a>.</p> <p><a href="https://i.stack.imgur.com/iYP6k.png" rel="nofollow noreferrer"><WBIMG:16971924-1.png></a></p> <p><strong>注意</strong> 不匹配使用否定字符 class 的行,您可以使用 <code>[^"\r\n][^>\r\n]*[排除匹配的换行符=36=]