如何使用re来查找连续的,重复的字符

Alc*_*ott 11 python regex

我想在字符串中找到所有连续的,重复的字符块.例如,请考虑以下事项:

s = r'http://www.google.com/search=ooo-jjj'
Run Code Online (Sandbox Code Playgroud)

我想找到这个:www,ooojjj.

我试着这样做:

m = re.search(r'(\w)\1\1', s)
Run Code Online (Sandbox Code Playgroud)

但它似乎并没有像我期望的那样起作用.有任何想法吗?

另外,我怎么能在Bash中做到这一点?

unu*_*tbu 13

((\w)\2{2,}) 匹配3个或更多连续字符:

In [71]: import re
In [72]: s = r'http://www.google.com/search=ooo-jjjj'
In [73]: re.findall(r'((\w)\2{2,})', s)
Out[73]: [('www', 'w'), ('ooo', 'o'), ('jjjj', 'j')]

In [78]: [match[0] for match in re.findall(r'((\w)\2{2,})', s)]
Out[78]: ['www', 'ooo', 'jjjj']
Run Code Online (Sandbox Code Playgroud)

(\w) 匹配任何字母数字字符.

((\w)\2)匹配任何字母数字字符后跟相同的字符,因为\2匹配组号2的内容.由于我嵌套了括号,组号2指的是匹配的字符\w.

然后将它们放在一起, ((\w)\2{2,})匹配任何字母数字字符,然后重复相同的字符2次或更多次.

总的来说,这意味着正则表达式要求角色重复3次或更多次.

  • @Alcott:`(\ w)`匹配任何字母数字字符.`((\ w)\ 2)`匹配任何字母数字字符后跟相同的字符,因为`\ 2`匹配组号2的内容.由于我嵌套了括号,组号2指的是匹配的字符`\ w`.然后把它们放在一起,`((\ w)\ 2 {2,})`匹配任何字母数字字符,然后再重复2次或更多次相同的字符.总的来说,这意味着正则表达式要求角色重复3次或更多次. (3认同)