python正则表达式中加括号匹配的问题

BrankoJuan 发布于 2016/07/13 08:04
阅读 3K+
收藏 0

import re

#匹配括号中的字符

p1 = re.compile('\(.*\)')

a1 = p1.findall('(123)')

其中a1的结果是['(123)']

p2 = re.compile('\((.*)\)') #在.*的两边又加了括号

a2 = p2.findall('(123)')

其中a2的结果是['123']

问题:为什么在.*两边加了括号以后匹配的结果不同了呢

加载中
0
B
BrankoJuan

@1.当给出的正则表达式中带有多个括号时,列表的元素为多个字符串组成的tuple,tuple中字符串个数与括号对数相同,字符串内容与每个括号内的正则表达式相对应,并且排放顺序是按括号出现的顺序。

@2.当给出的正则表达式中带有一个括号时,列表的元素为字符串,此字符串的内容与括号中的正则表达式相对应(不是整个正则表达式的匹配内容)。

@3.当给出的正则表达式中不带括号时,列表的元素为字符串,此字符串为整个正则表达式匹配的内容

0
Feng_Yu
Feng_Yu
请看正则表达式相关的知识和书籍,在PCRE/ERE系列正则中,小括号的含义是正则分组
B
BrankoJuan
这个和正则分组没关系吧,具体参照我的第一条解答
0
YuXingY
YuXingY
字符串中有子组时,findall方法显示的结果是子组的内容
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部