【问题标题】:Notepad++ Regular Expression : Find all input tags without ID, add if missingNotepad ++正则表达式:查找所有没有ID的输入标签,如果缺少则添加
【发布时间】:2011-11-03 22:37:15
【问题描述】:

我有很多 html 文件是使用没有 ID 的 Input 标签开发的,并且只有名称来通过 javascript 识别对象。

使用 notepad++ 正则表达式查找和替换,谁能帮我找到所有缺少 ID 的输入标签,并将其插入与 "name" 相同的值,其余元素保持原样

<input name="MyName" MyAttr="3453" >  

替换为

<input name="MyName" id="MyName" MyAttr="3453" >

希望使用 Notepad++ 或如果您知道任何其他可以进行批量操作的编辑器来执行此操作。

谁能帮帮我?

提前致谢。

【问题讨论】:

  • FailedDev 所说的对我来说似乎是正确的。如果标签的顺序是一致的,那么你可以根据它进行匹配,但如果标签重新排序,那么你可能需要使用更复杂的 RegEx 工具。
  • all inputs 是否缺少 id 属性?还是只是其中的一部分?
  • 其中一些丢失了。有些也有额外的属性。这让它变得更加棘手。

标签: jquery regex notepad++


【解决方案1】:
(<input.*?(?!.*\bid=['"]))(?=>)

替换为:

$1id="MyName"

如果您使用 perl 或其他支持 PCRE 表达式的实用程序,上述正则表达式将可以正常工作。但是记事本++不支持这个:http://sourceforge.net/apps/mediawiki/notepad-plus/index.php?title=Regular_Expressions

所以我怕这是用记事本做不到的++

【讨论】:

    【解决方案2】:

    警告: Regular Expressions are not the best way to find things in HTML files

    用于分隔 HTML 标记的元字符也可以出现在文件的其他位置,不可能编写正则表达式来处理所有可能的情况。

    除非您的 HTML 文件非常简单,否则最好使用 HTML 解析器编写程序。有许多可用于 Java 和 .NET 的解析器。

    【讨论】:

    • 我认为最初的发布者试图在 Notepad++ 中快速清理静态文件,而不是编写 .NET 或 Java 应用程序。
    • @David,他要求使用记事本或其他可以工作的批量编辑器。对于 StackOverflow 海报来说,编写简单的应用程序应该不会太远。否则他应该问超级用户。
    • 我最初的意图是快速清理,避免自己编写解析器。我将尝试的下一个快速解决方案是使用带有 Notepad++ PythonScript 的 python 插件,我在 Faildev 发布的链接上阅读了该插件。谢谢大家的反馈。
    【解决方案3】:

    FaildDev 给出了正确答案:默认的 Notepad++ 正则表达式引擎无法胜任。

    但是,您可以查看this thread,了解有关通过扩展 Notepad++ 来实现这项工作的一些技巧,以及替代方案的链接。

    另外,这是一个更新的正则表达式,它允许您使用名称值作为您的 id,我认为这就是您所要求的:

    (<input.+?name="(\w+)")((?:(?!id=).)*?>)
    

    替换为:

    $1 id="$2"$3
    

    您可以使用REGex TESTER 在线试用。请注意,它并不是非常健壮,但如果您知道运行它的 HTML 是相当一致的,那么您应该能够摆脱它。

    【讨论】:

      猜你喜欢
      • 2015-03-23
      • 2012-11-17
      • 1970-01-01
      • 1970-01-01
      • 2013-11-29
      • 1970-01-01
      • 2015-06-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多