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 正则表达式我不知道用什么来保持地址数据的完整性,我试过这样的东西,但它破坏了整个地址:
- 查找内容:
, (.+address)
- 替换为:
</title><address>(.+address)
如何简单地用新标签替换 first 逗号 </title><address>
?
你可以使用
<title>[^<>,\v]*\K,\h*([^<>\v]*</address>)
替换为</title> <address>
。
详情
<title>
- 字符串 <title>
[^<>,\v]*
- 除了 <
、>
、逗号和任何垂直空格 以外的零个或多个字符
\K
- 匹配重置运算符,丢弃目前匹配的所有文本
,
- 逗号
\h*
- 零个或多个水平空格
([^<>\v]*</address>)
- 第 1 组(</code> 或 <code>
反向引用指的是组值):
[^<>\v]*
- 除了 <
、>
和任何垂直空格 以外的零个或多个字符
</address>
- </address>
字符串。
我有这样的数据在 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 正则表达式我不知道用什么来保持地址数据的完整性,我试过这样的东西,但它破坏了整个地址:
- 查找内容:
, (.+address)
- 替换为:
</title><address>(.+address)
如何简单地用新标签替换 first 逗号 </title><address>
?
你可以使用
<title>[^<>,\v]*\K,\h*([^<>\v]*</address>)
替换为</title> <address>
。
详情
<title>
- 字符串<title>
[^<>,\v]*
- 除了<
、>
、逗号和任何垂直空格 以外的零个或多个字符
\K
- 匹配重置运算符,丢弃目前匹配的所有文本,
- 逗号\h*
- 零个或多个水平空格([^<>\v]*</address>)
- 第 1 组(</code> 或 <code>
反向引用指的是组值):[^<>\v]*
- 除了<
、>
和任何垂直空格 以外的零个或多个字符
</address>
-</address>
字符串。