正则表达式多行匹配异常:无法捕获多行import起始行内容
解决Python re模块多行分组匹配问题
嘿,我来帮你排查这个问题~你遇到的情况是因为第二行的"import"前面有个空格,而你写的正则^(import .+?$)里的^在re.MULTILINE模式下匹配的是每一行的开头,但第二行的行首是空格,不是直接跟着"import",所以这一行没被匹配到。
解决方案
调整正则表达式,允许行首出现任意空白字符(空格、制表符等),用\s*来匹配这些空白:
import re text = "import alkfa dfa aldkf \n import my name is xyz \n i am working incoverfox" # 加入\s*匹配行首的空白字符 m = re.findall(r'^\s*(import .+?$)', text, re.MULTILINE) print(m)
运行这段代码后,输出就会符合你的预期:
['import alkfa dfa aldkf ', 'import my name is xyz ']
补充说明
re.MULTILINE模式确实让^和$匹配每一行的开头和结尾,但它不会忽略行首的空白字符,所以必须显式用\s*去匹配这些空白。- 如果你的文本里第二行的空格是输入错误,直接去掉空格也能让原正则正常工作,但显然用正则适配空白场景更通用。
内容的提问来源于stack exchange,提问作者Pradeep
相关产品推荐
相关产品推荐

