匹配捕获组固定次数

问题描述 投票:1回答:2

我有一串5个字母的字符串。对于每个字符串,我只想在该字符串包含3个相同字母的实例时进行匹配,即:

Case 1: 'aabbc'  ->  no match
Case 2: 'bbbcc'  ->  match 'bbb'
Case 3: 'ddcdc'  ->  match 'ddd'

我最好的正则表达式尝试是:

(.){1}(?!\1)*\1{1}(?!\1)*\1{1}

这适用于情况1(没有匹配项)和情况2(其中3个实例相邻),但不适用于情况3(其中3个实例由至少一个其他字母分隔)。是否存在适用于情况3的正则表达式?理想情况下,我还要从字符串中提取3个匹配实例的位置。

python regex regex-lookarounds regex-group python-regex
2个回答
0
投票

我认为模式([a-z]).*?\1.*?\1可以满足您的要求,尽管可能会出现一些使这种情况复杂化的情况。

该模式将查找一个小写字母三遍,并且它们之间包含0个或多个字符。

然后您可以仅提取捕获组以获取您的匹配位置。


0
投票

您可以使用以下正则表达式来确定一个字符是否至少出现了三遍。

^.*(.).*\1.*\1
© www.soinside.com 2019 - 2024. All rights reserved.