我想编写一个python正则表达式来替换字符串FARM_FINGERPRINT()
以及该方法调用中的任何内容,并使用字符串'0'。例如,对于字符串:
s = 'FARM_FINGERPRINT(stuff(more stuff()), even more stuff), another_thing()'
正则表达式应该用'0, another_thing()'
替换它。
我也对非正则表达式解决方案持开放态度。
答案 0 :(得分:1)
标识要匹配的字符串的开头以及该匹配中的第一个括号(从而将p_count
初始化为1
)。逐个字符串地逐字符号,并为每个左括号1
添加p_count
到(
,并为每个闭括号1
从p_count
减去)
}。当所有左括号都已关闭时退出循环。
s = 'FARM_FINGERPRINT(stuff(more stuff()), even more stuff), another_thing()'
start = 'FARM_FINGERPRINT('
p_count = 1
for idx, i in enumerate(s.split('FARM_FINGERPRINT(')[-1]):
if i=='(': p_count+=1
elif i==')': p_count-=1
elif p_count==0: stop = idx; break
string_to_replace = s[:len(start)+stop]
s = s.replace(string_to_replace, '0')
print(s)
输出:
0, another_thing()