【问题标题】:regexp parsing error in C#C#中的正则表达式解析错误
【发布时间】:2017-11-29 02:37:13
【问题描述】:

我有包含此类文本的 html

.......
<a class="product_name" href="index.php?productID=29785">Funny</a>
........
<a class="product_name" href="index.php?productID=29787">Very Funny</a>
......

我想 href 属性值和文本进入链接所以我想得到

"index.php?productID=29785", "Funny"
"index.php?productID=29787", "Very Funny"

我用

MatchCollection mc = Regex.Matches(pageData, 
   "<a class=\"product_name\" href=\"(.+)\">(.+)</a>");

为此。但是当我调试代码时,我看到 mc.Count = 0

我认为我没有正确地转义引号,但我不知道。

【问题讨论】:

  • 用正则表达式解析 html 并不是一个好主意
  • 我在这里得到 count=2,顺便说一句,捕获组按预期工作。显示的正则表达式适用于显示的 html。如果它不起作用,那么要么 a:您没有以相同的方式呈现场景,要么 b:html 更复杂,由于您不应该使用 regex 解析 html 的所有原因,它变得异常困难
  • 同意。它也适用于这里 (regexhero.net/tester)

标签: c# .net regex


【解决方案1】:

不要使用正则表达式解析 HTML。请参阅here 了解令人信服的原因。

请改用HTML Agility Pack

【讨论】:

  • Regex 不适合解析 html,但我不会为这样一个简单的任务在我的项目中添加新的依赖项。
  • @L.B - 那你有什么建议?编写自己的解析器/标记器?
  • @L.B - 你似乎在自相矛盾。 “Regex 不适合解析 html” ... “我会使用 Regex”.
【解决方案2】:
猜你喜欢
  • 1970-01-01
  • 2018-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-10
  • 1970-01-01
  • 2012-10-17
  • 1970-01-01
相关资源
最近更新 更多