python正则表达式可选匹配取决于起始字母

时间:2018-01-20 22:26:03

标签: python-2.7 regular-language

我有这两种模式 “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) 有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

股票re模块无法执行此操作,但您可以使用支持可变长度后备广告的regex执行此操作:

regex.findall(r"(?<=R.*?)(\d+)\s*\d*\s*|(?<=B.*?)\s*\d+\s*(\d+)", ...)

对于R案例,输出看起来像[('1', ''), ('3', ''), ('5', '')],对于B,输出看起来像[('', '2'), ('', '4')]

但是,你真的应该在空格上拆分字符串并检查第一个元素。这不是一个非常好的正则表达式。