【问题标题】:How to get text between td tags using regular expressions如何使用正则表达式在 td 标签之间获取文本
【发布时间】:2012-04-04 17:59:02
【问题描述】:

我想获取 html 页面的 td 标签之间的文本..

以下是页面html代码的简短sn-p

 <tr align="right"><td>989</td><td>Kristoffer</td><td>Shameka</td>

 <tr align="right"><td>990</td><td>Lazaro</td><td>Deirdre</td>

 <tr align="right"><td>991</td><td>Torey</td><td>Shantell</td>

 <tr align="right"><td>992</td><td>Bill</td><td>Cherish</td>

 <tr align="right"><td>993</td><td>Bruno</td><td>Linsey</td>

 <tr align="right"><td>994</td><td>Genaro</td><td>Hali</td>

 <tr align="right"><td>995</td><td>Waylon</td><td>Tarah</td>

 <tr align="right"><td>996</td><td>Brittany</td><td>Annemarie</td>

。 . .等等。

我想使用正则表达式提取单个单元格值(例如:对于第一列 989,Kristoffer 和 Shameka)。帮助!

【问题讨论】:

  • 为什么?!编写 DOM 是为了让您不必使用正则表达式解析 html 文档!为什么你认为你需要这样做?
  • 使用正则表达式吗?您知道这确实是 HTML 的格式(总是)并且格式正确吗?如果没有,请阅读this 了解为什么正则表达式是一个糟糕的解决方案。
  • @Neil - DOM 应该如何在 C# 中工作?
  • 你不能!请改用 javascript/jQuery。
  • 同意,这是 DOM 解析器而不是正则表达式的工作。

标签: c# html regex


【解决方案1】:

无论输入的 HTML 是否总是具有正确且相同的结构,Regex 都不是您正在做的事情的最佳解决方案 - 因为 HTML 不是常规语言,Regex 可能是一个糟糕的解决方案,正如 @ 所解释的那样987654321@.

如果您不能相信输入是相同的,您应该使用像 HTML Agility Pack 这样的 HTML 解析器,它可以处理格式错误的 HTML 并查询其对象模型。

如果您知道输入始终具有相同的格式,在这种情况下,使用您显示的输入,您可以并且应该使用string.Split 来解析出所需的值。

myHtmlString.Split(new []{@"<tr align=""right""><td>", "</td><td>", "</td>" },
                   StringSplitOptions.RemoveEmptyEntries)

【讨论】:

  • -1:如果不存在其他选项,则可接受的答案,但尚未确定是否无法使用 javascript 以更好的方式完成。
  • @Neil - OP 没有询问 javascript。这个问题用 C# 标记。
  • 我有兴趣解决他的问题,而不是回答他的问题。
  • @Neil - 你是说这个答案不能解决他的问题?你怎么知道的?
  • @Neil,您可能没有注意到 OP 在他的问题中添加了标签 C#,这明确暗示他想要 C# 中的答案。 Oded 正在回答所提出的问题,并且显然令 OP 满意。
猜你喜欢
  • 2011-03-18
  • 1970-01-01
  • 2017-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-27
  • 2020-10-14
相关资源
最近更新 更多