【发布时间】:2014-11-13 09:43:04
【问题描述】:
我正在使用 Sublime Text,我需要想出一个正则表达式来查找某个开始和结束标记之间的空格并用逗号替换它们。
示例:替换
中的空格<tags>This is an example</tags>
所以变成了
<tags>This,is,an,example</tags>
谢谢!
【问题讨论】:
标签: html regex tags sublimetext2 sublimetext3
我正在使用 Sublime Text,我需要想出一个正则表达式来查找某个开始和结束标记之间的空格并用逗号替换它们。
示例:替换
中的空格<tags>This is an example</tags>
所以变成了
<tags>This,is,an,example</tags>
谢谢!
【问题讨论】:
标签: html regex tags sublimetext2 sublimetext3
【讨论】:
这将找到
的实例<tags>...</tags>
标签之间有空格
(<tags>\S+)\W(.+</tags>)
这将用逗号替换第一个空格
\1,\2
打开查找和替换 [OS X Cmd+Opt+F :: Windows Ctrl+H]
使用上面的两个值来查找和替换并使用“全部替换”选项。重复,直到所有空格都转换为逗号。
最好的答案可能是一个快速的脚本,但这会让你很快到达那里,而无需进行任何编码。
【讨论】:
您可以使用 single 正则表达式替换两个标签之间的任何一个或多个空白块:
(?s)(?:\G(?!\A)|<tags>(?=.*?</tags>))(?:(?!</?tags>).)*?\K\s+
请参阅regex demo。 详情
(?s) - 一个 DOTALL 内联修饰符,使 . 匹配换行符(?:\G(?!\A)|<tags>(?=.*?</tags>)) - 上一个成功匹配的结尾 (\G(?!\A)) 或 (|) <tags> 子字符串,紧跟在任何零个或多个字符之后,尽可能少,然后是 </tags>(参见 @ 987654333@)(?:(?!</?tags>).)*? - 任何不以 <tags> 或 </tags> 子字符串开头的字符,出现零次或多次但尽可能少\K - match reset operator
\s+ - 一个或多个空格(注意:如果必须替换每个空格,请使用 \s)。【讨论】: