我有一串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个匹配实例的位置。
我认为模式([a-z]).*?\1.*?\1
可以满足您的要求,尽管可能会出现一些使这种情况复杂化的情况。
该模式将查找一个小写字母三遍,并且它们之间包含0个或多个字符。
然后您可以仅提取捕获组以获取您的匹配位置。
您可以使用以下正则表达式来确定一个字符是否至少出现了三遍。
^.*(.).*\1.*\1