Skip to main content
 首页 » 编程设计

Python 正则表达式捕获组拆分问题

2025年05月04日32JustinYoung

试图理解 python 中的正则表达式示例,这是我的代码

line='bar asdfgh klmn,     foo' 
print(re.split(r'(;|,|\s)\s*',line)) 
#output is ['bar', ' ', 'asdfgh', ' ', 'klmn', ',', 'foo'] 

在输出中它显示了字符串和分隔符,最后一个分隔符是一个有五个空格的逗号,而不仅仅是一个逗号

如果分隔符只是一个逗号,输出不应该是这样的吗?

#output ['bar', ' ', 'asdfgh', ' ', 'klmn', ',', '     foo'] 

请您参考如下方法:

如果在正则表达式中使用捕获组,则 re.split 包含捕获组的内容。但是,它仍然使用整个匹配项作为分隔符,这会导致您观察到的行为。如果您希望 "".join(split_results) 等于原始字符串,则需要捕获整个分隔符(并在现在有括号的地方使用非捕获括号:r'((?:;|,|\s)\s*)').