2012-03-04 58 views
1

在Python匹配模式中,如何在与数字\1这样的数字反向引用之后匹配像1这样的文字数字?python re.match group: number后面的数字

我尝试了\g<1>语法,该语法在替换模式中可用于此目的,但它不适用于我的匹配模式。

我有一个更大的问题,我想解决使用一个函数,将执行以下有点不寻常的任务。其任务是动态构建模式,以便每个模式匹配某些位置有重复数字的位数字序列和剩余位置的特定数字。

回答

2

我注意到我不需要\g<1>语法。相反,我可以使用其中一种技术将\2之类的数字反向引用与9之后的数字分开。这里有三个这样的技术:

  • 非捕获组(?:\2)9
  • 由一个\2{1}9
  • 使用否则不必要的字符类仅包含下面的反向引用数字否则不必要量化\2[9]
+0

+1,用于查找“{1}”的有效用途!更加困惑的是,在大多数情况下,一些正则表达式并不需要这种解决方法。如果只有两个或三个捕获组,“\ 29”将被解释为对组#2的反向引用,接着是文字“9”。我不知道Python是否属实。无论您使用哪种技术,我都建议您评论一下。 – 2012-03-04 07:15:11

2

将您想要匹配的数字直接放在字符类\1[1]或其自己的组\1(1)中,以便括号或p arentheses将数字与反向引用分开。

+0

没有反对票,但是分组会更好,因为它是一个非捕获组:'\ 1(?:1)'。 – EOL 2012-03-04 05:44:35