我有一个reg ex模式,如下所示:
pattern = re.compile(r'(.)\1?')
这用于识别字符串中字母的两倍。但我不明白它是如何工作的。 (。)在这做什么?什么是\ 1做什么?我知道 '?'是找到1个事件,'*'用于查找多于1个事件。
答案 0 :(得分:3)
.
匹配任何一个字符(换行符除外,除非您设置re.DOTALL
/ re.S
flag)(...)
创建一个捕获的组;这些从1 \1
是一个与第1组匹配的任何内容匹配的反向引用。?
使反向引用成为可选项。因此(.)\1
匹配1个字符,后跟相同的字符。 (.)\1?
匹配一个字符或一个字符重复一次。
你可以更详细地写这个:
(?P<one_character>.)(?P=one_character)?
使用命名模式而不是依赖于编号的模式。