正则表达式中,group()用来提出分组截获的字符串,()用来分组
import re
a = "123abc456"
print re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(0) #123abc456,返回整体
print re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(1) #123
print re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(2) #abc
print re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(3) #456
究其因
1. 正则表达式中的三组括号把匹配结果分成三组
- group() 同group(0)就是匹配正则表达式整体结果
- group(1) 列出第一个括号匹配部分,group(2) 列出第二个括号匹配部分,group(3) 列出第三个括号匹配部分。
2. 没有匹配成功的,re.search()返回None
3. 当然正则表达式中没有括号,group(1)肯定不对了。
本文备注:首次发博,copy仅供自学用。
原文链接:http://www.cnblogs.com/kaituorensheng/archive/2012/08/20/2648209.html
正则表达式截取URL文件名及后缀名
例:/upload/activity/xueba/20161025/091909_ce15d6bf-1089-4002-9ff6-016e13e420e5.gif
1,获取图片名称
正则表达式:[^\/\\]+$
匹配结果:091909_ce15d6bf-1089-4002-9ff6-016e13e420e5.gif
2,获取后缀
正则表达式:[^\.]\w*$
匹配结果:gif
提取文件后缀代码示例:
# URL样式:https://www.cppentry.com/upload_files/article/77/1_l1zuv__.jpg
pic_type = re.search(r'[^\.]\w*$', pic_url).group(0)
# URL样式:https://img12.360buyimg.com/jrpmobile/jfs/t4300/7/1201145185/119287/2ce425d7/58bec2dfNd95a3522.jpg?width=1080&height=480
pictype = re.search(r'[^\.]\w*\?', pic_url).group(0)
pictype = pictype.split('?')[0]
提取文件名(id)示例:
# URL样式:http://news.sina.com.cn/o/2017-03-12/doc-ifychihc6279025.shtml
id = re.search('doc-i(.*).shtml',url).group(1)