将vim正则表达式转换为python for re.sub

时间:2015-02-04 22:18:12

标签: python regex vim

我在vim下有一个工作正则表达式:/^ \{-}\a.*$\n

我实施全局搜索并替换为:%s/^ \{-}\a.*$\n// 这很好用 - 删除所有以任意数量的空格(非贪婪匹配)开头的行,后跟一行字母和其他任何内容到行尾(包括换行符)。

我不能(为了拯救我的灵魂)弄清楚Python中类似的正则表达式。这对我有意义:

x = re.sub("^ *?\a.$\n","",y)

但这并没有做任何事情。

非常感谢你的睿智答复。

2 个答案:

答案 0 :(得分:2)

\a表示Python中的钟形字符(0x07),$\n是一个多余的坏主意,所以:

x = re.sub(r"^ *[A-Za-z].*\n","",y)

此外,没有理由在这里写' *?'而不是' *',因为如果它匹配,它总是会跟着一个非空格。

答案 1 :(得分:2)

如果您想匹配任意数量的空格,您还可以使用\s序列。

任何字母都将与[a-zA-Z]字符类匹配。您也不需要使用$\n

建议如下:

x = re.sub(r"^\s*[a-zA-Z].*(\r|\n)","",y)

如果您想要至少一个空格,请使用\s+代替\s*