首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

求教一个正则表达式有关问题

2012-11-04 
求教一个正则表达式问题对于字符串:56546[werwer][3434343]5656如果想提取出括号中的内容,我可以这样做Pyt

求教一个正则表达式问题
对于字符串:56546[werwer][3434343] 5656

如果想提取出括号中的内容,我可以这样做

Python code
patten = ur'''(\[(.+)\])(\[(.+)\])'''txt = r'56546[werwer][3434343]  5656'target = re.compile(patten , re.VERBOSE)match = target.search(txt)if match:    print match.group(2)    print match.group(4)



但当要求变成“可以有一个中括号,也可以有两个”,
我想的是将正则变成:(\[(.+)\]){1,2}

Python code
patten = ur'''(\[(.+)\]){1,2}'''txt = r'56546[werwer][3434343]5656'target = re.compile(patten , re.VERBOSE)match = target.search(txt)if match:    print match.group(0)    print match.group(1)    print match.group(2)


结果,提取出来的东西并不是我要的结果,如下:
[werwer][3434343]
[werwer][3434343]
werwer][3434343

请问在有{m,n}的情况下,怎么使用group来提词,或者说有什么其他方法


[解决办法]
Assembly code
Type "help", "copyright", "credits" or "license" for more information.>>> import re>>> txt = r'56546[werwer][3434343]  5656'>>> patten = '\[.+?\]'>>> re.findall( patten, txt)['[werwer]', '[3434343]']
[解决办法]
Python code
Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win32Type "copyright", "credits" or "license()" for more information.>>> s = '56546[werwer][3434343] 5656'>>> import re>>> mat = re.findall(r'\[([^\]]+)]', s)>>> mat['werwer', '3434343']>>> 

热点排行