正则表达式如何表达相同的字符反复出现n次?

为简单化,n=3吧
"\S{3,}" 可以匹配 "abc",但是这个abc是三个不同的字符。

"a{3,}" 这样也不行,如何表达其他的字符反复出现了呢?
注意:这个相同的字符,是任意字符,只要它相同就行,哪怕是 "((((",
不是特定的某个字符。

pat="([a-z]){3,}"
re.match(pat,"abc")
<re.Match object; span=(0, 3), match='abc'>
re.match(pat,"aaa")
<re.Match object; span=(0, 3), match='aaa'>
"abc","aaa"都可以匹配,只有"aaa"是符合的,所以 pat="([a-z]){3,}" 不是正确的表达式!

写成 pat="(a){3,}" ,你如何去匹配 "bbbb"?

阅读 2.3k
3 个回答

这样?

Python3 代码

import re

lines = '''
abc
((((
aaa
bbbb
'''.split()

for line in lines:
    if re.match(r'^(.)\1{2,}$', line):
        print(line)

结果

((((
aaa
bbbb

/(abc){3,}/.exec("abcabcabcabcabc")

/[abc]{3,}/.exec("aaabbbcccabcabc")

/(.)\1{2,}/

/(.)\1{2,}/.test('aaa') // true
/(.)\1{2,}/.test('bbb') // true
/(.)\1{2,}/.test('aab') // false
/(.)\1{2,}/.test('aabaaa') // true
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进