【问题标题】:Regular expression for Regex classRegex 类的正则表达式
【发布时间】:2011-12-08 10:43:00
【问题描述】:

必须编写一个匹配以下内容的正则表达式:

<a href="../../_asp/link.asp?link=sp1234.htm 

<a href="../../_asp/link.asp?link=AL432123.htm

“=”之后只能是“AL”或“sp”字符串,.htm 之前可以是任意数量的数字

会是这样的:

 Regex reg = new Regex("<a href=\"../../_asp/link.asp?link=(AL|sp)[0-9]+.htm");

对正则表达式了解不多,要尽快写这一篇。 htm 文件中的这个子字符串需要用另一个字符串替换。谢谢!

【问题讨论】:

  • 这行得通,以前是双反斜杠吗?正则表达式 reg = new Regex("
  • 您为什么要尝试使用正则表达式解析 HTML?这通常是一个非常糟糕的主意。如果可能,请使用适当的 HTML 解析器,例如 HTML Agility Pack。

标签: c# regex


【解决方案1】:

试试这个:

new Regex(@"<a href=""\.\./\.\./_asp/link\.asp\?link=(AL|sp)[0-9]+\.htm"); 

【讨论】:

  • 您正在错误地转义 "。在逐字 (@) 字符串中,您必须使用 "",而不是 \" 来表示字符。
  • 噢!忘记。谢谢你的收获。答案固定。
【解决方案2】:

第一件事 - 在正则表达式中,. 表示任何字符。您需要使用\. 将其转义。 ? 也是一个特殊字符。

Regex reg = new Regex("<a href=\"(\.{2}/){2}_asp/link\.asp\?link=(AL|sp)[0-1]+\.htm");

其次,[0-1] 匹配 0 或 1。你想要 [0-9]\d

Regex reg = new Regex("<a href=\"(\.{2}/){2}_asp/link\.asp\?link=(AL|sp)\d+\.htm");

但是你真的应该使用 HTML 解析器而不是正则表达式来解析 HTML。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    • 1970-01-01
    相关资源
    最近更新 更多