Python 正则表达式 : how to extract inner data from regex

标签 python html regex

我想从这样的正则表达式中提取数据:

<td>[a-zA-Z]+</td><td>[\d]+.[\d]+</td><td>[\d]+</td><td>[\d]+.[\d]+</td>  

我找到了相关问题 extract contents of regex 但就我而言,我应该以某种方式进行迭代。

最佳答案

正如 paprika 在他/她的评论中提到的那样,您需要使用 () 来识别任何匹配文本的所需部分以触发捕获组。要从 td 标签中获取内容,请更改:

<td>[a-zA-Z]+</td><td>[\d]+.[\d]+</td><td>[\d]+</td><td>[\d]+.[\d]+</td> 

到:

<td>([a-zA-Z]+)</td><td>([\d]+.[\d]+)</td><td>([\d]+)</td><td>([\d]+.[\d]+)</td>
     ^^^^^^^^^           ^^^^^^^^^^^           ^^^^^           ^^^^^^^^^^^
      group 1             group 2              group 3          group 4

然后按编号访问组。 (只是第一行,带有“^”的行和命名组的行只是为了帮助您查看括号中指定的捕获组。)

dataPattern = re.compile(r"<td>[a-zA-Z]+</td>... etc.")
match = dataPattern.find(htmlstring)
field1 = match.group(1)
field2 = match.group(2)

等等。但是你应该知道,使用 re's 破解 HTML 源代码是走向疯狂的途径之一。在您输入的 HTML 中潜伏着许多潜在的惊喜,它们是完美工作的 HTML,但很容易打败您的回复:

  • “”代替“”

  • 标签之间或数据与标签之间的空格

  • " "间距字符

像 BeautifulSoup、lxml 甚至 pyparsing 这样的库将成为更强大的网络抓取工具。

关于Python 正则表达式 : how to extract inner data from regex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3860881/

相关文章:

Java通过\\S分割

javascript - JS正则表达式将6位数字转换为dd-dd-dd

python - 将一个巨大的json字符串反序列化为python对象

python - 相当于 Python 中 Matlab 中的 'ismember' 吗?

python - 我有随机挑战和随机答案,但我希望随机挑战与正确答案绑定(bind)

html - CSS - 目标 div 的最后一个实例

javascript - 如何在 cordova/phonegap 2.7.0 上实现 pdf.js 库?

python - 检查数字属于哪个特定范围(在许多范围内)的最pythonic方法是什么?

javascript - 从参数获取变量

c++ - 从文件中获取行并用作正则表达式(正则表达式)