【问题标题】:Regular Expression to find a complete html tag in source file [duplicate]正则表达式在源文件中查找完整的 html 标签 [重复]
【发布时间】:2015-04-13 06:39:56
【问题描述】:

我想要一个正则表达式(在 phpstorm 中搜索),它将在我的项目目录的所有 html 文件中搜索起始标记及其对应的结束标记。

例如,这是我的代码

<ul class="sub-menu">
<li id="menu-item-215" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-215"><a href="news-updates/index.html"><span>News / Updates</span></a></li>
<li id="menu-item-295" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-295"><a href="offers/index.html"><span>Offers</span></a></li>
</ul>

我希望 phpstorm 准确地搜索从开始 ul 标记和结束 ul 标记开始的这些代码行。然后我想用空格替换这些行。我只想一次从我的所有 html 文件中删除这个副标题标签及其内容。 我该怎么做?

【问题讨论】:

  • 不要使用正则表达式解析 HTML。使用适当的 HTML 解析模块。 您无法使用正则表达式可靠地解析 HTML,并且您将面临悲伤和挫败感。一旦 HTML 与您的期望发生变化,您的代码就会被破坏。请参阅htmlparsing.com/phpthis SO thread,了解如何使用已经编写、测试和调试过的 PHP 模块正确解析 HTML。
  • @AndyLester 谢谢,但我只想替换整个标签并将其从我的所有项目文件中删除。我不能简单地使用 PHPStorm 编辑器搜索和替换吗?
  • 我没有意识到 PHPStorm 是一个 IDE。然后我不确定我会建议什么。使用正则表达式解析 HTML 的问题在于,正则表达式无法胜任处理任意 HTML 的任务,而且我不知道 PHPStorm 是否会处理多行正则表达式。请参阅htmlparsing.com/regexes 了解可能妨碍您的正则表达式的有效 HTML 示例。

标签: html regex replace html-parsing phpstorm


【解决方案1】:

试试这个(大?)正则表达式:

<ul\s+class="sub-menu">\s+<li\s+id="menu-item-215"\s+class="menu-item\s+menu-item-type-post_type\s+menu-item-object-page\s+menu-item-215"><a\s+href="news-updates/index\.html"><span>News\s+/\s+Updates</span></a></li>\s+<li\s+id="menu-item-295"\s+class="menu-item\s+menu-item-type-custom\s+menu-item-object-custom\s+menu-item-295"><a\s+href="offers/index\.html"><span>Offers</span></a></li>\s+</ul>

它将与您帖子中的文本完全匹配。

HTH

【讨论】:

    【解决方案2】:

    好的,我终于在 PhpStorm 搜索和替换中使用了这个正则表达式:

    <ul class="sub-menu">(.*\n.*.\n.*)</li>\n</ul>
    

    【讨论】:

      猜你喜欢
      • 2019-04-15
      • 2018-11-10
      • 2020-12-15
      • 2020-11-04
      • 1970-01-01
      • 2014-06-16
      • 1970-01-01
      • 2014-10-10
      • 1970-01-01
      相关资源
      最近更新 更多