我想在括号之间找到一些文字,例如,我想从“查看全部(70)网络”中提取70
我已经被堆栈溢出用户看到使用pyrex网站来练习buildig正则表达式,并且在他们的指导下我已经能够成功地这样做了。
使用RegEx的GROUP功能时出现问题。
我相信 GROUP 用于获取字符串的第一次或第二次出现,并且在大多数情况下有多个
它可能会说“查看全部(6)”和“查看全部(70)所以.group [1]会返回70.但是如果只有一个实例我仍然需要它来告诉它价值?
我得到的错误是:
NoneType: object has no attribute group
我不确定如何解决这个问题?我可以停止使用正则表达式,但它们可以节省编写各种其他文本操作逻辑的时间。
答案 0 :(得分:0)
group()基于您定义的识别捕获组。例如:
import re
searchText = "(ONE) TWO THREE"
result = re.search("(ONE)", searchText).group(1)
print("match:", result)
输出:('match:', 'ONE')
//捕获组=组(1)
searchText = "ONE TWO THREE"
result = re.search("(ONE)\s(TWO)\s(THREE)", searchText).group(3)
print("match:", result)
输出:('match:', 'THREE')
//捕获组=组(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)