【问题标题】:Regular Expression remove whitespace between letters正则表达式删除字母之间的空格
【发布时间】:2015-11-13 01:12:28
【问题描述】:

我以某种方式弄乱了我的 html,现在我的所有 html 看起来像这样,每个字符之间都有一个空格

< d i v  c l a s s = " c o l - x s - 1 2   c o l - s m - 6 " >                               
< d i v  c l a s s = " f o r m - g r o u p   c o l - x s - 1 2 "> 
< d i v  c l a s s = " r a d i o "> 
< l a b e l  c l a s s = " r a d i o - l a b e l  "> 

超过 2000 行代码。我需要像这样回去

<div class = "col-xs-12 col-sm-6">                               
<div class = "form-group col-xs-12" > 
<div class = "radio" > 
<label class = "radio-label" > 

我可以在 notepad++ 中使用什么正则表达式来解决这个问题?

【问题讨论】:

  • 你到底是怎么做到的?我不熟悉 Notepad++ 正则表达式语法,但您想要一个能够找到由空格分隔的任何两个非空格字符并删除空格(留下两个字符)的语法。然后,您可以将双空格更改为单空格。
  • 我尝试在 Visual Studio 中进行简单的查找和替换,结果发现发生了 40000 次更改。我什至无法撤消。
  • 我去过那里,我感受到了你的痛苦。
  • 在 NP++ 中,您也可以尝试 (?&lt;=[^ ])[ ] 并替换为空。

标签: html regex notepad++


【解决方案1】:

Notepad++ 不支持非常高级的正则表达式。最好的办法是进行查找和替换,将两个连续的空格替换为页面中没有出现的特殊字符,例如 ~。

< d i v~c l a s s = " c o l - x s - 1 2~ c o l - s m - 6 " >~ 
< d i v~c l a s s = " f o r m - g r o u p~ c o l - x s - 1 2 "> 
< d i v~c l a s s = " r a d i o "> 
< l a b e l~c l a s s = " r a d i o - l a b e l~"> 

现在,您可以用空字符串替换所有空格以将其删除:

<div~class="col-xs-12~col-sm-6">~
<div~class="form-group~col-xs-12">
<div~class="radio">
<label~class="radio-label~">

现在我们必须用空格替换特殊字符 (~),我们就完成了:

<div class="col-xs-12 col-sm-6"> 
<div class="form-group col-xs-12">
<div class="radio">
<label class="radio-label ">

既然你提到你有 Visual Studio,如果你有 Visual Studio,这实际上更容易解决,因为你可以使用更高级的正则表达式:查找 (\S)\s(.)\s 并替换为 $1

如果您安装了 TextFX 插件,您可以通过 TextFX -&gt; TextFX Quick -&gt; Find/Replace 在 notepad++ 中运行相当复杂的正则表达式。您可以运行(\S)\s(.)\s 作为表达式来查找并使用\1 进行替换。

【讨论】:

  • 做到了。你是一个救生员!
  • 标记为答案和点赞是表达感谢的最佳方式。很高兴你能康复。
  • np++ uses PCRE(这是高级的)但有些功能不可用。
  • Notepad++ 有强大的正则表达式,可能你使用的是旧版本。 Notepad++ 将处理答案末尾的表达式。有关文档链接,请参阅 stackoverflow.com/questions/11389466/…
  • 我使用的是 6.8.3。 PCRE(大部分)可使用插件获得:TextFX -&gt; TextFX Quick -&gt; Find/Replace。但是,在查找和替换对话框中,语法非常有限。该问题上链接的文档适用于 C++ 库。这是 np++ 文档的链接,上面写着“如果您安装了插件”。 docs.notepad-plus-plus.org/index.php/Regular_Expressions 不过,我应该扩展答案以显示如何使用 TextFX 替换功能完成此替换。
【解决方案2】:

怎么样:

查找内容:(?&lt;=\S)\s(?=\S)
替换为:NOTHING

这将替换两个非空格 \S 之间的每个空格 \s

(?&lt;=\S) 是积极的后瞻
(?=\S) 是积极的前瞻

【讨论】:

    猜你喜欢
    • 2014-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-17
    • 1970-01-01
    相关资源
    最近更新 更多