【Python】正则表达式入门
世界Skill
正则表达式用于字符串匹配,其强大之处在于方便和快捷(不说效率),在文本处理的时候非常建议使用。
基础
Python中的正则表达式库为re,使用时加载此库即可:
import re
1.规则:
正则表达式的规则很简单,其基本形式如下:
'a.*b\S+'
其中,a和b为确定字符,表示你希望匹配的具体字符串。
.和\S为特殊字符,用于匹配并非精确确定的东西,比如此处的.表示任意字符(包括空字符),\S表示一个非空字符。
*和+是数量词,比如\S+表示匹配1-无穷个非空字符。
具体的规则可以在这里查看:正则表达式规则表
2.基本使用:
在Python中,使用正则表达式匹配可以用re库下的match方法。
比如我想匹配以下字符串:
text='''<bg trans1>家,房间</bg>'''
制定规则时,可以如此制定:
:::python
p=r'<\S+\s+S\+>.*</\S+>'
也可以使用ur'xxx'的形式,指定为unicode编码。
含义为:
<+若干非空字符+若干空字符+若干非空字符+>任意字符++若干非空字符+>
设定好规则之后,便可以进行匹配,匹配方法的使用:
m=re.match(p,text)
如果匹配成功,将会返回匹配值,否则返回None。
3.分组:
有时候我们希望不仅仅是匹配,并且能够取得我们所期望的一些字符串,这时候可以使用分组功能。
将规则改写:
p=r'<(\S+)\s+(\S+)>(.*)</(\S+)>'
以()为标识,里面的表达式被视为一个分组,这时再调用match方法,返回的值便是一个分好的数组,调用group方法便可以得到各个分组的数据。
执行:
text='''<bg trans1>家,房间</bg>'''
p=r'<(\S+)\s+(\S+)>(.*)</(\S+)>'
m=re.match(p,text)
可得结果:
>>> print m.group()
<bg trans1>家,房间</bg>
>>> print m.group(0)
<bg trans1>家,房间</bg>
>>> print m.group(1)
bg
>>> print m.group(2)
trans1
>>> print m.group(3)
家,房间
>>> print m.group(4)
bg
点击查看评论