python - Python正则表达式捕获组拆分问题
问题描述
试图理解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*)'
。
推荐阅读
- c# - 将 Vector2Int 转换为 Vector3
- reactjs - 使用 Typescript 渲染 react antd 树不返回任何数据
- git - 推送标签上触发的 Github Action,删除标签并再次推送后会触发,但会使用旧版本的代码
- vue.js - VueJS Ecountering nextTick:IE中的“错误:无效参数”
- c - 如何使用简单的 Daemon C 代码在 Ubuntu 16.10 中启动 systemctl 服务
- apache-spark - 如何将 Spark DataFrame 并行推送到 ElasticSearch
- ajax - 更新 p:dialog 会清除同一对话框中的 p:message
- php - php - 如何防止 echo ¯ 创建¯ 字符,
- automation - 如何使用命令行运行测试完整项目?
- microsoft-graph-api - Microsoft Graph API 获取消息返回空字符串