Python之正则表达式相关知识介绍

Python之正则表达式

正则表达式是用来描述目标字符串特征的一串特殊的文本,它定义了一种匹配模式,可以用来匹配与检索符合该模式的文本。学习正则表达式首先要了解元字符。

元字符作用
string匹配包含string的字符串
re1 | re2匹配正则表达式re1或者re2
^匹配以指定字符串开头的字符串
$匹配以指定字符串结尾的字符串
.匹配除\n之外任意字符串
*匹配0次或者多次前文正则表达式
+匹配1次或者多次前文正则表达式
?匹配0次或者1次前文正则表达式
(…)匹配括号内的正则表达式并另存为子组
[…]匹配包含方括号中字符集任一字符的字符串
{}匹配字符串长度
\d匹配十进制数字
\w匹配字母或者数字
\s匹配空格字符\n、\t、\r、\v、\f 等

常用的正则表达式函数:

  1. 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
  1. search():与match()函数类似,不同的是search()函数不要求从字符串起始位置开始匹配。
>>> import re
>>> s1="P python1 python2 python3 python"
>>> print(re.search("python",s1))
<re.Match object; span=(2, 8), match='python'>
  1. findall():用于查找字符串中所有符合正则表达式的字符串,返回一个列表。
>>> import re
>>> s="python1 python2 python3 python"
>>> print(re.findall("python",s))
['python', 'python', 'python', 'python']
  1. split():用于按某个字符将目标字符串分解成若干个部分,并将这些部分以列表的形式返回。
>>> import re
>>> s = "python1 python2 python3 are all python"
>>> print(re.split(" ",s))
['python1', 'python2', 'python3', 'are', 'all', 'python']
  1. sub():用于将目标字符串中的某些字符替换成指定字符串。
>>> import re
>>> s = "python1 python2 python3 are all python"
>>> print(re.sub("python","Python",s))
Python1 Python2 Python3 are all Python
  1. 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')
  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'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值