首页 文章

在记事本中的某些标记之间用逗号替换空白

提问于
浏览
2

我正在尝试在记事本中编写一个正则表达式,它将所有空格包含在2个标记之间,并用逗号替换它们 .

所以基本上,如果我有这个输入:

<foo>bar bar bar</foo>
<tag>bar bar bar</tag>

我想只在foo标签内替换空格来获得一个resut:

<foo>bar,bar,bar</foo>
<tag>bar bar bar</tag>

匹配foo之间的所有内容相当简单:

(?<=(<foo>))(.*)(?=(<\/foo>))

但是搜索\ s不起作用:

(?<=(<foo>))(\s)(?=(<\/foo>))

1 回答

  • 3

    由于您要替换没有子项的标记内的空格,也不想替换相同的嵌套标记,您可以使用

    (?:\G(?!^)|<foo>)[^\s<]*\K\s+
    

    请参阅regex demo,替换为 , .

    Details

    • (?:\G(?!^)|<foo>) - 上一次成功比赛结束或 <foo>

    • [^\s<]* - 除空白之外的零个或多个符号和 <

    • \K - 省略到目前为止匹配的文本

    • \s+ - 一个或多个空格 .

相关问题