您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

字符串上的Python re.sub多行

字符串上的Python re.sub多行

您需要re.MULTILINEre.DOTALL/替换,re.S并在字符类外移出句点,因为它在字符类内,点与文字匹配.

请注意,re.MULTILINE只有重新定义的行为^$被强制匹配在开始/结束 线 ,而不是整个字符串。该re.DOTALL标志*

因此,您可以在当前示例中使用的正则表达式:/\*.*?\*/。它相匹配的文字/*/\*,然后.*?尽可能少的任何符号尽可能至多并包括相匹配*/(具有匹配\*/)。

参见代码演示:

txt = """\n\
<?PHP\n\
/* Multi-line\n\
comment */\n\
$var = 1;\n"""
new_txt = re.sub(r'/\*.*?\*/', '', txt, flags=re.S)
print("\n=========== TXT ============")
print(txt)
print("\n=========== NEW TXT ============")
print(new_txt)

IDEONE演示

但是,它不是最佳解决方案,因为在大多数情况下,多行注释非常长。最好是 展开循环 技术。上面的正则表达式可以像这样“展开”:

/\*[^*]*(?:\*(?!/)[^*]*)*\*/

正则表达式演示

python 2022/1/1 18:39:28 有265人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶