python - 正则表达式来识别包括方括号的文本
问题描述
我有一个示例字符串 - x = "something [TextA][TextB]",带有以下 re 命令-
re.search('\[(.*)\]',x).groups()
我能够实现结果为 - “[TextA][TextB]”,但我正在寻找作为列表的结果 - [“[TextA]”,“[TextB]”]
解决方案
我能够取得成果 - “[TextA][TextB]”
因为.*
是贪心的,所以第一个匹配跳过第一个]
封闭TextA
并继续到第二个封闭TextB
。
用于.*?
非贪婪匹配。您并不严格需要此工具;您可以改为匹配“任意数量的非字符]
”,例如[^\]]*
. 但我认为.*?
要容易得多,而且概括得更好。
但我正在寻找结果作为列表
如果您需要获得特定数量的匹配项,那么您可以在您的正则表达式中明确指定每个匹配项,并为每个匹配项进行适当的捕获。如果您需要任意数量的匹配项,请使用findall
而不是search
:
>>> re.findall('\[(.*?)\]', 'foo[bar][baz]')
['bar', 'baz']
推荐阅读
- mysql - 从表中获取具有最高行数的 post_id
- java - 在 percolate 查询中不推荐使用类型,但 PercolateQueryBuilder 类仍然需要该类型
- terraform - 无法使用 Terraform 和 LocalStack 组合创建 LambdaPermission:创建:意外状态“”,想要目标“活动”
- .htaccess - 如何正确转义用户代理以阻止 htaccess 文件
- python - ROS:对于大数据流,例如原始图像,ZeroMQ 是否比原生图像主题更好?
- reactjs - 为什么多个子实例在电子中运行?
- django - 为什么我收到 botocore.exceptions.ClientError: An error occurred (403) when calling HeadObject operation: Forbidden?
- android - 如何使用回收站视图进行自定义抽屉布局?
- java - 异步批量插入/更新表。Spring MVC,Java 8(或更高版本,Java 12)
- php - wordpress max_user_connections 错误脚本优化