regex 删除三引号之间的所有\n

yhuiod9q  于 2023-06-30  发布在  其他
关注(0)|答案(1)|浏览(111)

我想要一个正则表达式模式,它匹配任何数量的某个东西在另一个东西中的出现。例如,关于以下代码:

'''\n           <html>\n         <body>\n           <p>Your file successfully uploaded</p>\n         </body>\n       </html>\n       '''

在这里,我有兴趣匹配''' s之间的每个\n。我想要的输出如下:

'''           <html>         <body>           <p>Your file successfully uploaded</p>         </body>       </html>       '''

我可以打破这个问题,找到三重引号之间的任何.*,然后简单地替换\n s。但我正在寻找一个更好的方法,可能适用于一次。我所有的尝试,如下面的尝试,只是找到或替换一个\n

re.findall('(?<=\'\'\').+(\\n)+[^\\n]+(?=\'\'\')', text, re.DOTALL)
ztigrdn8

ztigrdn81#

您可以将re.sub与自定义repl一起用作函数:

import re
text = "'''\n           <html>\n         <body>\n           <p>Your file successfully uploaded</p>\n         </body>\n       </html>\n       ''' Don't replace this\n new line"
result = re.sub("\'\'\'[^\']*\'\'\'", lambda x: x.group(0).replace('\n',''), text)

相关问题