【问题标题】:Sublime Text regex to find and replace whitespace between two xml or html tags?Sublime Text regex 查找和替换两个 xml 或 html 标签之间的空格?
【发布时间】: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


    【解决方案1】:

    您只需使用一个简单的正则表达式,例如:

    \s+
    

    并用逗号替换它。

    Working demo

    【讨论】:

    • 我在大约 50 个 xml 文件中有数百行,我不能一次做一个。我需要一些只能定位 标签内的空格的东西。
    【解决方案2】:

    这将找到

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

    标签之间有空格

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

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

    \1,\2
    

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

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

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

    【讨论】:

      【解决方案3】:

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

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

      请参阅regex demo详情

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

      SublimeText 设置:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-06
        • 1970-01-01
        相关资源
        最近更新 更多