我有以下代碼:
import re
pattern = r"(?s)FUNCTION [A-Z]{4,6}(.*?)\b\w*(?<!,)END\b"
regex = re.compile(pattern)
with open('functions.f', 'r') as input_file:
with open('stripped.f', 'w') as output_file:
result = regex.sub('', input_file.read())
output_file.write(result)
它查找名稱長度為 4 到 6 個字符的函式并洗掉它們。我希望能夠使用名稱串列僅洗掉特定功能,以便如果有
FUNCTION ABCD
END
FUNCTION EFGHI
END
FUNCTION JKLM
,END
FUNCTION NOPQRS
END
并且要洗掉的函式的給定串列是[EFGHI,NOPQRS],只有相應的函式被洗掉,并且只有
FUNCTION ABCD
END
FUNCTION JKLM
,END
保留在輸出檔案中。
我怎樣才能做到這一點?
uj5u.com熱心網友回復:
替換[A-Z]{4,6}為以|.分隔的特定函式名稱串列。將它放在一個組中以將其作為正則運算式中的子單元進行匹配。
funcs = ['EFGHI','NOPQRS']
pattern = rf"(?s)FUNCTION ({'|'.join(funcs)}).*?\b\w*(?<!,)END\b"
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/358676.html
