每日10行代码91:正则表达式的前瞻模式应用
程序员文章站
2022-03-03 11:43:36
今天想处理字符串相似度时,遇到一个实际问题:假如一个公司的名字为 “武汉市中国石油武汉分公司” ,如果想把武汉替换为武汉市,直接替换的话会把第一个武汉也替换了,但我只想把后面一个武汉替换成武汉市,于是了解到了正则表达式的前瞻模式。所谓的前瞻模式正是解决这个问题的,比如想匹配武汉一词,但只想匹配后面不是“市”的武汉。也就是说前瞻模式会往后多看几个词,看是否匹配正则表达式。为什么前瞻模式是往后看?因为正则表达式的扫描是从左往右扫描的,对于扫描来说,未扫描的部分是前,扫描过的是后。但是对于整个文本来说就是开...
今天想处理字符串相似度时,遇到一个实际问题:
假如一个公司的名字为 “武汉市中国石油武汉分公司” ,如果想把武汉替换为武汉市,直接替换的话会把第一个武汉也替换了,但我只想把后面一个武汉替换成武汉市,于是了解到了正则表达式的前瞻模式。所谓的前瞻模式正是解决这个问题的,比如想匹配武汉一词,但只想匹配后面不是“市”的武汉。也就是说前瞻模式会往后多看几个词,看是否匹配正则表达式。
为什么前瞻模式是往后看?
因为正则表达式的扫描是从左往右扫描的,对于扫描来说,未扫描的部分是前,扫描过的是后。但是对于整个文本来说就是开头是前,结尾是后。
import re
s = "武汉市中国石油武汉分公司"
pat = r'武汉(?!市)'
tt = re.search(pat,s)
print(tt.group())
aa = re.sub(pat,'武汉市',s)
print(aa)
‘武汉(?!市)’ 中 (?!市)的意思就是匹配后面不是市的武汉。
本文地址:https://blog.csdn.net/weixin_44981444/article/details/111921302