删除注释和前导/尾随空白的正则表达式

2024-09-30 01:36:35 发布

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

我试图创建一个正则表达式来删除前导的尾随空格和注释。在

def func():
    text="""test1    #comments1
    test 2 blah      #comments2
    test3 4
    923423423        #comments3
    """

期望结果:

^{pr2}$

到目前为止,我有以下情况:

(?:\s*(.*?)\s*)(?:#.*)

https://regex101.com/r/okF3mg/2

但没有评论就漏了一行


Tags: texthttpstestdef情况funcblah空格
3条回答

{cd1>你可以使用^:

import re
text="""test1    #comments1
test 2 blah      #comments2
test3 4
923423423        #comments3
"""
new_result = re.sub('\s+#\w+(?=\n)', '', text)

输出:

^{pr2}$

要在一个单个正则表达式中完成此操作,可以匹配前导空格、捕获延迟重复的字符,然后匹配尾随空格和可选的#子字符串,并替换为第一个捕获的组:

output = re.sub(r'(?m)^ *(.*?) *(?:#.*)?$', r'\1', input)

对于任何可能的情况,最好将标志内嵌到模式中:

re.sub(r"(?m)\s+#\w+(?=\n)", " ", text)

相关问题 更多 >

    热门问题