我在vim下有一个工作正则表达式:/^ \{-}\a.*$\n
我实施全局搜索并替换为:%s/^ \{-}\a.*$\n//
这很好用 - 删除所有以任意数量的空格(非贪婪匹配)开头的行,后跟一行字母和其他任何内容到行尾(包括换行符)。
我不能(为了拯救我的灵魂)弄清楚Python中类似的正则表达式。这对我有意义:
x = re.sub("^ *?\a.$\n","",y)
但这并没有做任何事情。
非常感谢你的睿智答复。
答案 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*