将内联注释移到上一行

时间:2015-03-08 18:51:10

标签: python regex

from re import compile, MULTILINE, sub

data= """\
 # comment1
key1=value1
key2=value2 # comment2
key3=value3 # comment3 #"""

print("----------------------- before sub")
print(data)
print("----------------------- after")
print(sub(compile("^(.*)(#.*)$", MULTILINE), "\\2\\n\\1", data).strip())

你认为有可能做得更好(只有一行)吗? 结果

------------------------- before sub
 # comment1
key1=value1
key2=value2 # comment2
key3=value3 # comment3 #
------------------------- after
# comment1

key1=value1
# comment2
key2=value2 
#
key3=value3 # comment3

我不知道做得更好。
如您所见,只有评论2得到妥善处理(行尾的空格除外)。

1 个答案:

答案 0 :(得分:3)

尝试^(\s*\S+\s*)(#[^\n]*)并替换为\1\n\2

print(re.sub(r"^(\s*\S+\s*)(#[^\n]*)", re.MULTILINE), r"\2\n\1", data)

See demo on Regex101