代码之家  ›  专栏  ›  技术社区  ›  Patrick

regex:不带>或空格的匹配短语

  •  1
  • Patrick  · 技术社区  · 16 年前

    我正在使用regex解析一些HTML,我想匹配以没有任何HTML标记的单词开头的行,同时删除空白。使用c regex,我的第一个模式是:

    pattern = @"^\s*([^<])";
    

    它试图获取所有空白,然后捕获任何非“<”字符。很遗憾,如果行在第一个“<”之前都是空白,则返回“<”之前的最后一个空白字符。我希望这次比赛不及格。

    有什么想法吗?

    2 回复  |  直到 16 年前
        1
  •  3
  •   cletus    16 年前

    不要使用正则表达式来解析HTML。这是一个非常糟糕的主意,最多,你的代码会很脆弱。无论您的语言/平台是什么,您都可以使用一个功能齐全的HTML解析器。就用这个。

    正则表达式无法正确处理所有转义、实体使用等情况。

        2
  •  1
  •   Patrick    16 年前

    很快就被问到了,刚刚解决了这个问题:

    模式=@“^\s*(?[s!] [^ & lt;] + ];

    感谢您对regex和html的反馈,我将把它牢记在心。我正在编写一个实用程序,使几页多语言(即:为硬编码文本添加asp:literals等),我认为regex就足够了,但如果有更好的工具,请告诉我(Web东西不是我的领域…)。