str = '''
河北省石家庄市 河北省唐山市 河北省秦皇岛市
内蒙呼和浩特市 内蒙包头市 内蒙乌海市
内蒙赤峰市 内蒙通辽市
广西南宁市 广西柳州市 广西桂林市
广西梧州市
重庆市江津市 重庆市合川市 重庆市永川市 重庆市南川市
新疆吐鲁番市 新疆哈密市 新疆昌吉市 新疆阜康市
新疆米泉市 新疆博乐市 新疆库尔勒市 新疆阿克苏市
'''
pattern = re.compile(r'(?<=新疆|.省|重庆市|广西).*?市')
list1 = pattern.findall(str)
我想提取所有的市名,但是这个正则表达式一直提醒我替代项需要同宽度,大家是怎么解决这个问题的呢?
1
usnake OP 不要说把重庆市改成庆市啊,会有其它问题的,比如前面一项是大庆市 之类的
|
2
dbsquirrel 2022-08-13 12:10:10 +08:00 1
pattern = re.compile(r"(?:(?<=新疆|内蒙|.省|广西)|(?<=重庆市)).*?市")
source: https://stackoverflow.com/questions/8194470/python-regex-with-look-behind-and-alternatives |
3
wxf666 2022-08-13 12:13:35 +08:00
『(?:新疆|.省|重庆市|广西)(.*?)市』?
|
4
usnake OP @dbsquirrel 感谢
|
5
pantsu 2022-08-13 15:40:52 +08:00 via Android
3 楼的写法才是最优解,别用逆序环视
|
6
HankLu 2022-08-13 16:12:14 +08:00
当你有一个问题需要用正则去解决,你就有了两个问题
|
8
learningman 2022-08-13 19:36:53 +08:00
@brucmao #7 『』里面装的才是表达式
|
9
wxf666 2022-08-13 20:11:48 +08:00
|