regex - Python 正则表达式不返回所有组
问题描述
tags = "['foo', 'bar', 'spam']"
tags = re.findall("\[(?:'(\w+)'(?:, )?)*\]", tags)
只返回 ['spam'],而不是 ['foo', 'bar', 'spam']。我究竟做错了什么?
解决方案
当您使用findall
包含捕获组的正则表达式时,它不会返回整个模式的匹配项,只返回捕获的组。
您的正则表达式中似乎不需要捕获组,因此请摆脱它。
tags = re.findall("\[(?:'\w+'(?:, )?)*\]", tags)
这返回:
["['foo', 'bar', 'spam']"]
推荐阅读
- python - Keras/Tensorflow 输入到 RNN 层
- flutter - Flutter 中的全局小吃吧/对话框实用程序类
- mongodb - 为什么在使用 Mongoose 时不需要 index.js 中的 MongoDB 常量?
- java - 我如何获得多个股票利润?
- ruby - 在 Windows 的 ruby 中,执行 cmd 提示命令“move”会给出错误“命令的语法不正确”。
- javascript - 尝试在 p5js 中存储“撤消”函数的数组值
- python - 通过 Python 获取我的本地 IP 地址和网络的子网掩码
- c# - 错误 CS0029 无法将类型“Microsoft.AspNetCore.Mvc.ActionResult”隐式转换为“System.Collections.Generic.List<>”
- php - 如何从 Python 运行 php 代码字符串?
- xml - Spark DataFrame 到 xml 文件