匹配所有出现的可选前缀/后缀[重复]
Posted
技术标签:
【中文标题】匹配所有出现的可选前缀/后缀[重复]【英文标题】:Matching all occurrences with optional prefix/suffix [duplicate] 【发布时间】:2022-01-24 03:53:18 【问题描述】:我有以下正则表达式:
(\+|-|\^)?[a-z\d]+
我正在尝试匹配任何字母数字字符序列,其前面可能有也可能没有+
、-
,后面可能有^
和一系列数字。但是,这不会产生我想要的结果。
例如下面的代码:
import re
r = re.findall(r'(\+|-|)?[a-z\d]+(\^\d+)?', '4x+5x-2445y^56')
返回结果[('', ''), ('+', ''), ('-', '^56')]
,但我希望它返回['4x', '+5x', '-2445y^56']
。
我做错了什么?
【问题讨论】:
【参考方案1】:您在尝试使用可选的?
时引入了两个捕获的组,这将由findall
返回。您可以使用?:
使它们不被捕获,同时仍然能够将某些模式组合在一起:
r = re.findall(r'[+-]?[a-z\d]+(?:\^\d+)?', '4x+5x-2445y^56')
r
['4x', '+5x', '-2445y^56']
【讨论】:
以上是关于匹配所有出现的可选前缀/后缀[重复]的主要内容,如果未能解决你的问题,请参考以下文章