Python之正则表达式
正则表达式是用来描述目标字符串特征的一串特殊的文本,它定义了一种匹配模式,可以用来匹配与检索符合该模式的文本。学习正则表达式首先要了解元字符。
| 元字符 | 作用 |
|---|---|
| string | 匹配包含string的字符串 |
| re1 | re2 | 匹配正则表达式re1或者re2 |
| ^ | 匹配以指定字符串开头的字符串 |
| $ | 匹配以指定字符串结尾的字符串 |
| . | 匹配除\n之外任意字符串 |
| * | 匹配0次或者多次前文正则表达式 |
| + | 匹配1次或者多次前文正则表达式 |
| ? | 匹配0次或者1次前文正则表达式 |
| (…) | 匹配括号内的正则表达式并另存为子组 |
| […] | 匹配包含方括号中字符集任一字符的字符串 |
| {} | 匹配字符串长度 |
| \d | 匹配十进制数字 |
| \w | 匹配字母或者数字 |
| \s | 匹配空格字符\n、\t、\r、\v、\f 等 |
常用的正则表达式函数:
- match():从字符串的起始位置开始匹配;若匹配成功,则返回匹配对象,否则返回None。
>>> import re
>>> s="python1 python2 python3 python"
>>> print(re.match("python",s))
<re.Match object; span=(0, 6), match='python'>
>>> s1="P python1 python2 python3 python"
>>> print(re.match("python",s1))
None
- search():与match()函数类似,不同的是search()函数不要求从字符串起始位置开始匹配。
>>> import re
>>> s1="P python1 python2 python3 python"
>>> print(re.search("python",s1))
<re.Match object; span=(2, 8), match='python'>
- findall():用于查找字符串中所有符合正则表达式的字符串,返回一个列表。
>>> import re
>>> s="python1 python2 python3 python"
>>> print(re.findall("python",s))
['python', 'python', 'python', 'python']
- split():用于按某个字符将目标字符串分解成若干个部分,并将这些部分以列表的形式返回。
>>> import re
>>> s = "python1 python2 python3 are all python"
>>> print(re.split(" ",s))
['python1', 'python2', 'python3', 'are', 'all', 'python']
- sub():用于将目标字符串中的某些字符替换成指定字符串。
>>> import re
>>> s = "python1 python2 python3 are all python"
>>> print(re.sub("python","Python",s))
Python1 Python2 Python3 are all Python
- group()和groups():当匹配没有子组要求(子组要求即正则表达式中包含(…)元字符,系统会匹配括号内的正则表达式并另存为子组)时,group()会返回整个匹配结果,而groups()会返回一个空元组。
>>> import re
>>> s = "python1 python2 python3 are all python"
>>> a = re.search("python",s)
>>> a.group()
'python'
>>> a.groups()
()
>>> b = re.search("([a-z]*)([0-9]*)",s)
>>> b.group()
'python1'
>>> b.group(2)
'1'
>>> b.groups()
('python', '1')
- compile():编译函数,可以缩短正则表达式的匹配时间,因为未经预编译的字符串在匹配过程中需要解释器来编译,当匹配次数巨大时,该函数起非常大的作用。
>>> import re
>>> s = "python1 python2 python3 are all python"
>>> pattern = re.compile(r"([a-z]*)([0-9]*)")
>>> b = pattern.search(s)
>>> b.group()
'python1'


被折叠的 条评论
为什么被折叠?



