re.sub()通过多行替换

2024-10-03 04:36:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在“)”和“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

Tags: 代码test文本importrestringif标识符
2条回答

使用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

优化方法:

模式\)[^)]+(?=\bTEXT3)(?<=\))(.*?)(?=\bTEXT3)更有效

import re

s = """
 text1) text2 
 TEXT3 text4

    """

res = re.sub(r'\)[^)]+(?=\bTEXT3)', ') ', s, re.M)
print(res)

输出:

text1) TEXT3 text4

相关问题 更多 >