本文实例讲述了Python正则表达式分组概念与用法。分享给大家供大家参考,具体如下:
正则表达式分组
分组就是用一对圆括号“()”括起来的正则表达式,匹配出的内容就表示一个分组。从正则表达式的左边开始看,看到的第一个左括号“(”表示第一个分组,第二个表示第二个分组,依次类推,需要注意的是,有一个隐含的全局分组(就是0),就是整个正则表达式。
分完组以后,要想获得某个分组的内容,直接使用group(num)和groups()函数去直接提取就行。
例如:提取代码中的超链接中的文本
> s='<div><a href="https://support.google.com/chrome/" rel="external nofollow" target="_blank">更多</a><p>dfsl</p></div>' > print re.search(r'<a.*>(.*)</a>',s).group(1) 更多
或者
> print re.match(r'.*<a.*>(.*)</a>',s).group(1) 更多
按照上面的分组匹配以后,我们就可以拿到我们想拿到的字串,但是如果我们正则表达式中括号比较多,那我们在拿我们想要的字串时,要去挨个数我们想要的字串时第几个括号,这样会很麻烦,这个时候Python又引入了另一种分组,那就是命名分组,上面的叫无名分组。
命名分组
命名分组就是给具有默认分组编号的组另外再给一个别名。命名分组的语法格式如下:
("htmlcode">> s = "ip='230.192.168.78',version='1.0.0'" > re.search(r"ip='(", s) > res.group('ip')#通过命名分组引用分组 '230.192.168.78'后向引用
正则表达式中,放在圆括号“()”中的表示是一个组。然后你可以对整个组使用一些正则操作,例如重复操作符。
要注意的是,只有圆括号”()”才能用于形成组。”“用于定义字符集。”{}”用于定义重复操作。
当用”()”定义了一个正则表达式组后,正则引擎则会把被匹配的组按照顺序编号,存入缓存。这样我们想在后面对已经匹配过的内容进行引用时,就可以用”\数字”的方式或者是通过命名分组进行”("htmlcode">#通过命名分组进行后向引用 > re.search(r'("htmlcode">> s = 'abc.xyz' > re.sub(r'(.*)\.(.*)', r'\2.\1', s) 'xyz.abc'前向肯定断言、后向肯定断言
前向肯定断言的语法:
("htmlcode">
> s1='''char *a="hello world"; char b='c'; /* this is comment */ int c=1; /* t his is multiline comment */''' > re.findall( r'("font-size: medium">前向否定断言、后向否定断言前向否定断言语法:
("htmlcode">
#提取不是.txt结尾的文件 > f1 = 'aaa.txt' > re.findall(r'.*\..*$("color: #800000">PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:JavaScript正则表达式在线测试工具:
http://tools.jb51.net/regex/javascript正则表达式在线生成工具:
http://tools.jb51.net/regex/create_reg更多关于Python相关内容可查看本站专题:《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。