我想在“)”和“ String”之间替换文本,并在输出中包括标识符,如果所需文本在一行中,则我的代码可以工作,但对于多行则不起作用。
import re
s = """
text1) text2
TEXT3 text4
"""
if re.findall(r'(?<=\))\s.*(.*?)(?=\s*TEXT3)',s,re.S):
test= re.sub(r'(?<=\))\s.*(?=\bTEXT3)',' ',s)
print(test)
else:
print("Not Found")
我所需的输出是这样:
text1) TEXT3 text4
答案 0 :(得分:1)
优化方法:
模式\)[^)]+(?=\bTEXT3)
比(?<=\))(.*?)(?=\bTEXT3)
的性能更好。
import re
s = """
text1) text2
TEXT3 text4
"""
res = re.sub(r'\)[^)]+(?=\bTEXT3)', ') ', s, re.M)
print(res)
输出:
text1) TEXT3 text4
答案 1 :(得分:0)
使用flags=re.MULTILINE|re.DOTALL
例如:
import re
s = """
text1) text2
TEXT3 text4
"""
test= re.sub(r'(?<=\))(.*?)(?=\bTEXT3)',' ',s, flags=re.MULTILINE|re.DOTALL)
print(test) #text1) TEXT3 text4