【发布时间】:2017-04-27 09:34:38
【问题描述】:
一定是重复的,但我好像找不到...
我正在使用一个组来匹配一个重复的子字符串。但是,我不希望该组被捕获。这似乎是一个矛盾。
明确地说,假设我想找到所有大写子集字符串的 3 个精确副本之后的任何字符。对于
s = 'hjgABABABfgfBBdqCCCugDDD'
| |
它应该返回
['f', 'u']
我可以很好地找到重复的字符串和后面的字符
import re
print(re.findall(r'([A-Z]+)\1{2}(.)', s))
给了
[('AB', 'f'), ('C', 'u')]
我可以轻松解析结果列表并获得第二个项目。但是有没有一种正则表达式方法可以让第二个项目开始?如果我尝试做
print(re.findall(r'(?:[A-Z]+)\1{2}(.)', s))
我明白了
raise source.error("invalid group reference", len(escape)) sre_constants.error: invalid group reference at position 10
我会很感激简短的验证,该问题确实是非捕获要求和检测重复所需的捕获之间的冲突。然后一个聪明的想法如何巧妙地实现目标。
【问题讨论】:
-
有了re模块,没有捕获组是不可能的。但是使用
regex模块,它可能会possible.. -
我的回答对你有用吗?
标签: python regex python-3.x