正则表达式匹配某几个字前面的字符并且删除

大概的需求就是,希望把start中这些字符串前面的字删除,比如就希望删除y中的‘

倪瓒(西元一三0一-一三七四年),江苏无锡人

’这句话

就是先match匹配一下,然后sub置空一下:

.*表示匹配大于等于0个任意字符串

| 表示或,这里用或符号把列表转字符串了

?=表示前瞻,可以看https://blog.csdn.net/csm0912/article/details/81206848

y='倪瓒(西元一三0一-一三七四年),江苏无锡人画卷。字元镇,号云林、迂翁。家境富饶,建清閟阁,收藏古书画,但个性孤高有洁癖,四十歲以后便棄家外出,过著漂泊的生活。倪瓒作画不喜用色彩,別有一种清淡雅逸的韻味。画修竹二竿,和枯木立於拳石畔,笔墨简率,不但竹叶本身深浅有致,和枯木、拳石间,也有浓淡之別。'
start = ('本幅', '此帖', '此长卷', '画上', '画卷', '此题', '此卷', '图绘', '此作', '画幅', '此札', '此小轴', '此长卷', '画中', '画面', '此为',
             '此冊', '此画冊', '本卷', '此幅', '此帧', '本画', '此像', '本件', '这套', '这是', '此页', '是册', '是图', '本图', '此碑', '本册', '此画')

if re.match(r".*(?=("+'|'.join(start)+r"))", str(y))!= None:
     print('y',y)
     temp_in = re.sub(r".*(?=("+'|'.join(start)+r"))", "", str(y))
     print('temp_in',temp_in)
print(re.match(r".*(?=("+'|'.join(start)+r"))", str(y))== None)
原文地址:https://www.cnblogs.com/liuxiangyan/p/14688462.html