关于Python中re.split分割空字符串的结果疑问
关于re.split分割空字符串的结果解释
核心原因在于\W*这个模式可以匹配空字符串(*表示允许零次匹配),而re.split处理空字符串输入+能匹配空的模式时,有特定的行为规则:
无捕获组的re.split(r'\W*', '')返回['','']
当用能匹配空的模式分割空字符串时,re.split会把空字符串看作被起始位置的空匹配分割成两部分:
- 左边是匹配前的空内容,右边是匹配后的空内容
- 由于模式没有捕获组,匹配到的空字符串不会被加入结果,最终得到两个空字符串组成的列表。
带捕获组的re.split(r'(\W*)', '')返回['','','']
当模式包含捕获组时,re.split会把捕获到的匹配内容也插入结果列表:
- 同样是起始位置的空匹配分割空字符串,左边是空内容,捕获到的是空字符串,右边是空内容
- 这三部分组合起来就形成了
['','','']
额外补充:如果换用不能匹配空的模式(比如\W+),分割空字符串会直接返回['']——因为找不到任何分割点,原字符串会被完整保留。
内容的提问来源于stack exchange,提问作者hucongling
相关产品推荐
相关产品推荐

