我正在尝试找到连续重复字母数字字符的匹配项。我正在尝试re.match("(\w)[\\1][\\1]",mystring)
但它似乎不起作用(总是返回None)。我想说“在括号中捕获任何字母数字字母,检查它是否连续两次出现。”
答案 0 :(得分:2)
足够接近:)
您可以使用re.findall
或re.search
:
LETTERS1 <- c(LETTERS[-1], LETTERS[1])
NUM <- c(1:9,0)
gsubfn('(.)$', function(x) if(grepl('[0-9]', x))
NUM[match(x, NUM)+1] else LETTERS1[match(x, LETTERS1)+1], waferlist)
使用match
无法执行此操作的原因是mystring = 'abccd'
print re.findall(r'(\w)\1', mystring) # ['c']
尝试从字符串的开头找到匹配项,并且在字符串的开头没有这样的模式match
字符串。
如果您想使用"(\w)[\\1][\\1]"
,您仍然可以这样做,但需要对捕获的群组进行额外访问:
match
答案 1 :(得分:1)
您可以执行以下操作:
import re
test='abcaabbccaaa123333333'
print re.findall(r'(([a-zA-Z0-9])\2+)', test)
打印:
[('aa', 'a'), ('bb', 'b'), ('cc', 'c'), ('aaa', 'a'), ('3333333', '3')]
答案 2 :(得分:0)
>>> pat = re.compile(r'(\w)\1')
>>> pat.findall('1234456678')
['4', '6']
你非常接近,但提醒我使用[]
表示捕获[]
括号内的任何内容,以便[\\1]
与文字字符\
和{{1}匹配}。另外,如果你重复两次,它会尝试找到三元组,因为第一组被计算为第一组。
这只会匹配双打BTW,如果你想匹配任意数量的重复,在正则表达式的末尾添加一个1
标记