Python 正则表达式返回重复的结果
对于这个正则表达式代码,我试图找到两个关键字“拒绝”或“拒绝”与“访问”或“服务”同时出现的情况: 打印match1时,它是输出:Python 正则表达式返回重复的结果,python,regex,Python,Regex,对于这个正则表达式代码,我试图找到两个关键字“拒绝”或“拒绝”与“访问”或“服务”同时出现的情况: 打印match1时,它是输出: [('declined', 'visit'), ('declined', 'visit'), ('declined', 'visit'), ('declined', 'visit'), ('declined', 'visit'), ('declined', 'visit'), ('declined', 'visit'), ('declined', 'visit'),
[('declined', 'visit'), ('declined', 'visit'), ('declined', 'visit'), ('declined', 'visit'), ('declined', 'visit'), ('declined', 'visit'), ('declined', 'visit'), ('declined', 'visit'), ('declined', 'visit'), ('declined', 'visit'), ('declined', 'visit'), ('declined', 'visit'), ('declined', 'visit'), ('declined', 'visit')]
但我只想打印一个输出:(“谢绝”、“访问”)
请告诉我代码的哪一部分出错了好吗?re.findall()
将返回指定内容的所有出现的列表。如果你只想要,比方说,列表中的第一个元素
您可以使用0
的订阅:
row = " the patient declined to attend the visit"
match1 = re.findall("(?=.*(refus\w*|declin\w*))(?=.*(servic\w*|visit\w*))", str(row)) # write it as social security
print (match1[0])
将模式锚定在开始处:
re.findall(r“^(?=.*(refus\w*| declin\w*))(?=.*(servic\w*| visit\w*)”,str(row))
@Wiktor,谢谢。那么为什么会发生这种错误呢?您使用的是re.findall
,它返回字符串中的所有匹配项,并且有很多匹配项。使用re.search
或在开始时锚定模式。但在示例中,我只有一个“谢绝”和一个“访问”。FindAll应该只找到那些,不是吗?你测试过你的模式了吗?有。另外,请参见
row = " the patient declined to attend the visit"
match1 = re.findall("(?=.*(refus\w*|declin\w*))(?=.*(servic\w*|visit\w*))", str(row)) # write it as social security
print (match1[0])