我正在阅读一本关于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']
?
答案 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)
一组是一对匹配的括号,通常带有它们之间的东西。群组有三个主要目的:
"|"
逻辑或元字符分隔的备选方案。"\n"
反向引用语法)内部和正则表达式之外保存并可用(使用"$n"
语法)。捕获组从1开始编号,并按开括号的出现顺序计算。