我想查找字符串中所有连续的重复字符块。例如,请考虑以下内容:如何使用re来查找连续的重复字符
s = r'http://www.google.com/search=ooo-jjj'
我想查找的是'www','ooo'和'jjj'。我试图这样做:
m = re.search(r'(\w)\1\1', s)
但它似乎并没有像我期望的那样工作。有任何想法吗?
另外,我该怎么做在Bash?
我想查找字符串中所有连续的重复字符块。例如,请考虑以下内容:如何使用re来查找连续的重复字符
s = r'http://www.google.com/search=ooo-jjj'
我想查找的是'www','ooo'和'jjj'。我试图这样做:
m = re.search(r'(\w)\1\1', s)
但它似乎并没有像我期望的那样工作。有任何想法吗?
另外,我该怎么做在Bash?
((\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']
下面的代码应该可以解决你的问题:
s="abc def aaa bbb ccc def hhh"
for match in re.finditer(r"(\w)\1\1", s):
print s[match.start():match.end()]
它的工作原理差不多吧,只是finditer
取代search
。它返回一个迭代器,而不是一个比赛,但...:
m = [(x.start(),x.end()) for x in re.finditer(r'(\w)\1\1', s)]
不工作究竟如何?它找到第一场比赛。如果你想一次所有的匹配,请尝试'findall'。 – tripleee