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