正则表达式,重新编译描述

时间:2014-03-01 15:09:48

标签: python regex

我有一个reg ex模式,如下所示:

pattern = re.compile(r'(.)\1?')

这用于识别字符串中字母的两倍。但我不明白它是如何工作的。 (。)在这做什么?什么是\ 1做什么?我知道 '?'是找到1个事件,'*'用于查找多于1个事件。

1 个答案:

答案 0 :(得分:3)

  • .匹配任何一个字符(换行符除外,除非您设置re.DOTALL / re.S flag
  • (...)创建一个捕获的组;这些从1
  • 开始编号
  • \1是一个与第1组匹配的任何内容匹配的反向引用。
  • ?使反向引用成为可选项。

因此(.)\1匹配1个字符,后跟相同的字符。 (.)\1?匹配一个字符一个字符重复一次。

你可以更详细地写这个:

(?P<one_character>.)(?P=one_character)?

使用命名模式而不是依赖于编号的模式。