Sublime Text正则表达式用于查找和替换两个xml或html标记之间的空格?

时间:2014-09-18 21:53:12

标签: html regex tags sublimetext2 sublimetext3

我正在使用Sublime Text,我需要提出一个正则表达式,它会找到某个开始和结束标记之间的空格,并用逗号替换它们。

示例:替换

中的空格
<tags>This is an example</tags>

所以它变成了

<tags>This,is,an,example</tags>

谢谢!

3 个答案:

答案 0 :(得分:11)

你只需要使用一个简单的正则表达式:

\s+

并用逗号代替。

<强> Working demo

enter image description here

答案 1 :(得分:4)

这将找到

的实例
<tags>...</tags> 

标签之间有空格

(<tags>\S+)\W(.+</tags>)

这将用逗号替换第一个空格

\1,\2

打开查找和替换[OS X Cmd + Opt + F :: Windows Ctrl + H]

使用上面的两个值来查找和替换并使用&#39;全部替换&#39;选项。重复,直到所有空格都转换为逗号。

最好的答案可能是一个快速的脚本,但这样可以让你快速到达那里,而无需进行任何编码。

答案 2 :(得分:0)

您可以使用单个正则表达式替换两个标签之间的任何一个或多个空白块:

(?s)(?:\G(?!\A)|<tags>(?=.*?</tags>))(?:(?!</?tags>).)*?\K\s+

参见regex demo详情

  • (?s) - DOTALL 内联修饰符,使 . 匹配换行符
  • (?:\G(?!\A)|<tags>(?=.*?</tags>)) - 前一个成功匹配的结尾 (\G(?!\A)) 或 (|) <tags> 子字符串,紧随其后的是零个或多个字符,如尽可能少然后</tags>(见(?=.*?</tags>)
  • (?:(?!</?tags>).)*? - 任何不以 <tags></tags> 子字符串开头的字符,出现零次或多次但尽可能少
  • \K - match reset operator
  • \s+ - 一个或多个空格(注意:如果必须替换每个空格,请使用 \s)。

SublimeText 设置: enter image description here