>>> [match.group() for match in matcher.finditer('aacbbbqq')]
['aa', 'c', 'bbb', 'qq']
注意:由于匹配组,re.findall将无法正常工作。
其他范围
如果您不想匹配任何字符,请相应地更改正则表达式中的.:
>>> matcher= re.compile(r'([a-z])\1*') # only lower case ASCII letters
>>> matcher= re.compile(r'(?i)([a-z])\1*') # only ASCII letters
>>> matcher= re.compile(r'(\w)\1*') # ASCII letters or digits or underscores
>>> matcher= re.compile(r'(?u)(\w)\1*') # against unicode values, any letter or digit known to Unicode, or underscore
一般
诀窍是匹配所需范围的单个字符,然后确保匹配同一字符的所有重复:
它匹配任何单个字符(
.
),如果有,则匹配其重复(\1*
)。对于输入字符串,您可以获得所需的输出:
注意:由于匹配组,
re.findall
将无法正常工作。其他范围
如果您不想匹配任何字符,请相应地更改正则表达式中的
.
:对照
u'hello²²'
(Python 2.x)或'hello²²'
(Python 3.x)检查后者:如果您首先发出了一个^{} 调用,则可能会修改针对非Unicode字符串的
\w
/bytearray。itertools.groupby
不是RexExp,但也不是自写的。:-)来自python文档的引用:您可以将其与:
(\w)\1*
匹配相关问题 更多 >
编程相关推荐