当并不总是有多个匹配项时,如何使用python正则表达式?

2024-06-15 12:31:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些文字,我想在括号中找到例如,我想提取70从“查看所有(70)网络”

我已经被stack overflow用户友好地展示了使用pyrex网站来练习构建正则表达式,在他们的指导下,我已经成功地做到了这一点。你知道吗

我的问题出现在使用RegEx的GROUP函数时。你知道吗

我相信用于获取字符串的第一次或第二次出现,并且在大多数情况下不止一次

它可能会说“View All(6)”和“View All(70)”,所以组[1]会返回70。但是如果只有一个实例仍然需要它来获取值,我该如何告诉它呢?你知道吗

我得到的错误是:

NoneType: object has no attribute group

我不知道如何解决这个问题?我可以停止使用正则表达式,但它们节省了编写各种其他文本操作逻辑的时间。你知道吗


Tags: 函数字符串用户网络viewstack网站group
1条回答
网友
1楼 · 发布于 2024-06-15 12:31:23

group()基于您定义的标识捕获组。例如:

import re

searchText = "(ONE) TWO THREE"
result = re.search("(ONE)", searchText).group(1)
print("match:", result)

输出:('match:', 'ONE')//capture group=group(1)

searchText = "ONE TWO THREE"
result = re.search("(ONE)\s(TWO)\s(THREE)", searchText).group(3)
print("match:", result)

输出:('match:', 'THREE')//capture group=group(3)

注意,在上一个示例中,我设置了三个捕获组(在括号中定义),并选择显示组(3)的输出。你知道吗

searchText = "FOUR TWO THREE"
result = re.search("(ONE)\s(TWO)\s(THREE)", searchText)

if result is not None:
    match = filter(None, result.group(3))
else:
    match = "None"

print("match:", match)

要处理异常AttributeError: 'NoneType' object has no attribute 'group',可以使用if语句返回一个外观更好的未找到匹配项的响应。对于无输出,则使用:

searchText = "ONE TWO THREE"
result = re.search("(ONE)\s(TWO)\s(THREE)", searchText)
print("match:", result)
if result is not None:
    print ("match:", result).group(3)

相关问题 更多 >