我有这两种模式 “R 1 2 3 4 5” 和 “B 1 2 3 4 5” 我想为它们创建一个模式,但只根据起始字母匹配。 例如 re.match(r“pattern”,“R 1 2 3 4 5”)。groups()==> (1,无,3,无,5) while(r“pattern”,“B 1 2 3 4 5”)。groups()==>(none,2,none,4,none) 有人可以帮忙吗?
答案 0 :(得分:0)
股票re
模块无法执行此操作,但您可以使用支持可变长度后备广告的regex执行此操作:
regex.findall(r"(?<=R.*?)(\d+)\s*\d*\s*|(?<=B.*?)\s*\d+\s*(\d+)", ...)
对于R
案例,输出看起来像[('1', ''), ('3', ''), ('5', '')]
,对于B
,输出看起来像[('', '2'), ('', '4')]
。
但是,你真的应该在空格上拆分字符串并检查第一个元素。这不是一个非常好的正则表达式。