几天来,我一直在调整一个正则表达式,试图用一个定义来捕获数据库地址字段中格式不一致的几种情况。
我是 Python 和正则表达式的新手,在这里得到了很好的反馈是 stackoverflow,并且根据我的新知识,我构建了一个接近最终结果的 RegEx,但仍然无法发现问题。
import re
r1 = r"([\w\s+]+),?\s*\(?([\w\s+\\/]+)\)?\s*\(?([\w\s+\\/]+)\)?"
match1 = re.match(r1, 'caracas, venezuela')
match2 = re.match(r1, 'caracas (venezuela)')
match3 = re.match(r1, 'caracas, (venezuela) (df)')
group1 = match1.groups()
group2 = match2.groups()
group3 = match3.groups()
print group1
print group2
print group3
这件事应该为第 1 组和第 2 组返回 'caracas, venezuela',为第 3 组返回 'caracas, venezuela, df',相反,它返回:
('caracas', 'venezuel' 'a')
('caracas ', 'venezuel' 'a')
('caracas', 'venezuela', 'df')
唯一完美的匹配是第 3 组。另外 2 个在末尾隔离 'a',第 2 个在 'caracas' 末尾有一个额外的空间。提前感谢您的任何见解。
干杯!