正则表达式中的组

时间:2015-10-30 14:42:51

标签: python regex python-3.x

我正在阅读一本关于Python的在线书籍,它解释了正则表达式,但我无法理解正则表达式中的哪些组。

例如:

之间有什么区别?
regex = re.compile(r'Name (\w)*')
regex.findall('Name Mahmoud')

regex = re.compile(r'Name \w*')
regex.findall('Name Mahmoud')

为什么findall()方法的第一次调用会给我['d'],但第二次调用它会给我['Name Mahmoud']

2 个答案:

答案 0 :(得分:2)

正则表达式组用于捕获正则表达式的一部分。

  • Name (\w)*捕获单个字符\w,并且该捕获重复多次*。您只能在结果中找到最新的捕获(d Mahmoud

  • Name \w*不使用群组...

  • Name (\w*)捕获一系列字符\w*,在您的情况下会产生Mahmoud

有关详细信息,请参阅https://docs.python.org/2/library/re.html#regular-expression-syntax

答案 1 :(得分:1)

正则表达式中的组是什么?

一组是一对匹配的括号,通常带有它们之间的东西。群组有三个主要目的:

  1. 一个组可能有多个以"|"逻辑或元字符分隔的备选方案。
  2. 组允许应用量词来重复指定次数的组内容。
  3. 捕获组是一种特殊类型的组,其中组的内容在正则表达式(使用"\n"反向引用语法)内部和正则表达式之外保存并可用(使用"$n"语法)。捕获组从1开始编号,并按开括号的出现顺序计算。