【问题标题】:How do I stop looping a regex expression如何停止循环正则表达式
【发布时间】:2011-06-20 12:43:04
【问题描述】:

我正在尝试从网页上的表格中提取信息,其中包含源信息,例如

    team.php?t=4636&s=98700">Memphis</a>          CUSA   1-11   117 ...
    team.php?t=66&s=98700">Akron</a>            MAC    ...
etc

使用正则表达式后,我得到了我的信息 - 大学名称

team.php.*?>(.*?)<

问题是网页上还有另一个类似的表格,并且此信息也出现了我可以使用一些中间文本来停止该过程,例如“表格 2”,但不知道如何将其合并到表达式

TIA

下面还有cmets。原始的 is here 我只想提取大约三分之一的团队名称,俄勒冈州,奥本等,而列底部没有会议

我尽可能创建了 xml dom 和 parsed it我追求的大学集

【问题讨论】:

  • 我永远不会使用正则表达式来解析 html。你最好检查一下 HTML DOM。
  • 有时我会使用正则表达式来解析 html。这里可能更好的方法是使用 html 解析器。
  • 是的。我以前曾使用过 html 解析器,但如果我想使用我将其链接到冷融合的偏好,它似乎相当复杂。我还将研究 HTML DOM 检查。然而,这是否意味着没有快速的答案??
  • @pssguy 我通常不解析 html,但我假设,如果您提供您正在使用的语言并提供更多源数据,例如一个完整的示例结构,您很可能会从您的语言专家的回答中获得一个很好的示例解决方案。
  • 分两步制作。首先使用 '/.*/' 之类的表达式提取正确的表。然后在该文本上,在上面运行您的大学名称表达式。

标签: regex html-parsing


【解决方案1】:

此正则表达式适用于从网站复制粘贴文本:(\d+ [A-Z][a-z](?:[^\d\s]\s?)+)

如果您想避免三次获取值,请使用循环,i 从 1:" ("+ i +" [A-Z][a-z](?:[^\d\s]\s?)+)" 开始

【讨论】:

    猜你喜欢
    • 2019-07-15
    • 1970-01-01
    • 1970-01-01
    • 2014-10-29
    • 1970-01-01
    • 1970-01-01
    • 2012-10-01
    • 2023-02-22
    • 1970-01-01
    相关资源
    最近更新 更多