Notepad++ 正则表达式匹配和替换某些标签之间的第一个逗号

Notepad++ regex to match and replace first comma between certain tags

我有这样的数据在 Notepad++ 中打开:

<title>Name 1, Address 1, NY</address>
<title>Name 2, Address 2, California</address>
<title>Name 3, Address 3, Texas</address>
<title>Name 4</title> <address>Address 4, Utah</address> <-- this line is 100% correct

...我想将第一个逗号定位到需要适当标记的组中,并将其替换为:</title><address>

我这样做了,它针对第二组(地址),但是 replace 正则表达式我不知道用什么来保持地址数据的完整性,我试过这样的东西,但它破坏了整个地址:

如何简单地用新标签替换 first 逗号 </title><address>?

你可以使用

<title>[^<>,\v]*\K,\h*([^<>\v]*</address>)

替换为</title> <address>

the regex demo

详情

  • <title> - 字符串 <title>
  • [^<>,\v]* - 除了 <>、逗号和任何垂直空格
  • 以外的零个或多个字符
  • \K - 匹配重置运算符,丢弃目前匹配的所有文本
  • , - 逗号
  • \h* - 零个或多个水平空格
  • ([^<>\v]*</address>) - 第 1 组(</code> 或 <code> 反向引用指的是组值):
    • [^<>\v]* - 除了 <> 和任何垂直空格
    • 以外的零个或多个字符
    • </address> - </address> 字符串。