大概的需求就是,希望把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)