【问题标题】:Regex - Remove all other texts except matching text正则表达式 - 删除除匹配文本之外的所有其他文本
【发布时间】:2013-06-08 16:47:02
【问题描述】:

我正在使用 sublime text 2 编辑器。我想删除除名称标签值之外的所有其他文本。

这是一个例子

<div class="control-group">
      <label class="control-label" for="c_email">Email (required)</label>
      <div class="controls">
        <input type="text" name="c_email" value="">
      </div>
    </div>

在上面的代码中,我想只保留名称标签值。为了匹配所有名称标签,我使用这样的正则表达式

name="(.+?)"

它匹配所有名称标签。但是当我用$1替换它时,它只会用c_email替换name="c_email"

有人可以帮我删除所有其他文本吗?

谢谢

【问题讨论】:

  • 为了确保我理解:您想用&lt;input&gt; 标记中的name 属性的值替换&lt;div&gt; 标记及其所有子标记?

标签: regex sublimetext2


【解决方案1】:

你可以这样做:

find: [\s\S]*?name="(.+?)"[\s\S]*
replace: $1

如果你想限制删除到你的目标 div:

find: <div class="control-group"[\s\S]*?name="(.+?)"[\s\S]*?</div>\s*</div>
replace: $1

【讨论】:

  • 您好,谢谢。但它只找到了 1 个匹配项。
  • @Giri:正常,第一次查找/替换仅针对一次(第一次)并删除所有文本文件。使用第二个只删除带有control-group 类的div
  • 好的,谢谢。当我使用[\s\S]*?name="(.+?)"[\s\S]*? 时,它工作正常。
猜你喜欢
  • 2016-10-23
  • 1970-01-01
  • 1970-01-01
  • 2018-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-02
  • 1970-01-01
相关资源
最近更新 更多