欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

每日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