Regex 利用升华文本进行文本提取

Regex 利用升华文本进行文本提取,regex,sublimetext,Regex,Sublimetext,假设我有一个带有以下片段的表单: <div class="form-control-group"> <label class="control-label" for="FirstName">First Name</label> <div class="controls"> <input id="FirstName" name="FirstName" type="text" class="input-xlarge" requir

假设我有一个带有以下片段的表单:

<div class="form-control-group">
  <label class="control-label" for="FirstName">First Name</label>
  <div class="controls">
    <input id="FirstName" name="FirstName" type="text" class="input-xlarge" required="">

  </div>
</div>

<div class="form-control-group">
  <label class="control-label" for="LastName">Last Name</label>
  <div class="controls">
    <input id="LastName" name="LastName" type="text" class="input-xlarge" required="">

  </div>
</div>

ST3有什么方法可以做到这一点吗?

尝试将正则表达式与html结合使用可能是一件非常痛苦的事情——许多人一想到它就会畏缩;有些人甚至会嘲笑你的尝试,然后把你引向另一个世界。然而,这并不是说它不能做到,因为它肯定可以做到。它真正需要做的比任何事情都重要的是努力理解为什么
html
是不可预测的,以及您可以如何驯服它。从外观上看,你甚至没有在这面上划过表面,或者甚至没有在上面呼吸过。幸运的是,当宇宙今天对齐时,我碰巧从html中提取字段名,同时遇到了你的悲伤

模式:

<.*>|\n.*\s.*\sid="(\w*)".*\n+|.*>\n|\n.+
$1
FirstName
LastName
结果:

<.*>|\n.*\s.*\sid="(\w*)".*\n+|.*>\n|\n.+
$1
FirstName
LastName

除非你花时间去理解这个有点简单的模式背后的全部复杂性,否则你可能永远不会明白为什么你应该了解它在做什么。简而言之,模式会找到输入的名称并将其放入一个组(
$1
)。它的其余部分处理了试图在html上使用正则表达式所带来的所有不可预测性(找到
,回车
\n
,空格
\s
和所有其他你不想要的垃圾。

有遗嘱的地方就有办法。你到底试过什么?你的名字和姓氏输入是唯一带有
占位符
属性的元素吗?如果是这样,这将非常简单。查看.Sublime文本使用Boost regex引擎,尽管存在一些反向引用错误,但它与Perl非常兼容。谢谢各位,感谢你们的帮助-BillThank,I'L'L,这非常接近。对我来说,它只生成LastName。我只是在寻找一种方法来快速重建具有不同字段的表单。也许我应该研究xpath。我已经使用了它b只在代码中,而不是在编辑器中-Bill@user61629,您使用的是上面的确切文本吗?如果不是,则可能只是由于缺少回车符而显示姓氏。使用此示例进行调整:我可能发现了您的问题;我认为这是您使用replace命令的方式。如果您在文档中使用OSX在Windows上按
Shift+Command+F
,我不确定,但我猜是
Shift+Alt+F
-然后全部替换。