我刚刚开始第一次使用正则表达式,并尝试使用它来解析 HTML 表中的一些数据。我试图捕获 <tr >
之间的所有内容和</tr>
标签,然后再次制作类似的正则表达式来创建 JSON 数组。
我尝试使用它,但它仅与第一组匹配,而不与其余所有组匹配。
<tr >(.*?)</tr>
如何找到这些标签之间的所有匹配项?
最佳答案
虽然使用正则表达式来完成这项工作是一个坏主意(有很多方法会出错),但您的模式基本上是正确的。
使用 Python 返回所有匹配
接下来的问题就变成了如何在 Python 中返回所有匹配项或捕获组。有两种基本方法:
- 查找器
- 查找全部
使用 finditer
for match in regex.finditer(subject):
print("The Overall Match: ", match.group(0))
print("Group 1: ", match.group(1))
使用 findall
findall
有点奇怪。当您有捕获组时,要访问捕获组和整体匹配,您必须将原始正则表达式括在括号中(以便也捕获整体匹配)。在您的情况下,如果您希望能够访问标签的外部和内部(您使用组 1 捕获的),您的正则表达式将变为: (<tr >(.*?)</tr>)
。然后你就可以:
matches = regex.findall(subject)
if len(matches)>0:
for match in matches:
print ("The Overall Match: ",match[0])
print ("Group 1: ",match[1])
关于python - 使用正则表达式查找两个字符串之间的所有匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24299068/