avatar

Python中的常用的正则表达式函数

Python中的常用的正则表达式函数

match()

match()函数从字符串起始位置开始匹配,匹配成功返回匹配对象,否则返回None。代码如下:

1
2
3
4
# 在'books'中匹配'book'
>>> import re
>>> print(re.match('book','books'))
<re.Match object; span=(0, 4), match='book'>
1
2
3
# 在'sbook'中匹配'book'
>>> print(re.match('book','sbook')
None

match()相似,不同的是search()不要求从字符串其实位置开始匹配。代码如下:

1
2
3
# 在'sbook'中匹配'book'
>>> print(re.search('book','sbook'))
<re.Match object; span=(1, 5), match='book'>

group() 和 groups()

match()search()返回的匹配对象有两个方法,分别是group()groups()当匹配没有子组要求时,group()会返回整个匹配结果 groups()会返回一个空元组。代码如下:

1
2
3
4
5
6
>>> python ='python2 python3 are all python'
>>> b = re.search('python',python)
>>> b.group()
'python'
>>> b. groups()
()

当匹配有子组要求时, group会返回指定子组, groups返回所有子组的元组。如果group()参数是0,对应的返回值是整个匹配串。如果参数是负数或大于模式串中定义的群数,则抛出异常IndexError: no such group。代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
>>> b=re.search ('([a-z]*)([0-9]*)','python2')
>>> b.group() # 整个匹配
'python2'
>>> b.group(0) # 整个匹配
'python2'
>>> b.group(1) # 第一个括号分隔的子群
'python'
>>> b.group(2) # 第二个括号分隔的子群
'2'
>>> b.group(3) # 抛出异常:IndexError: no such group
IndexError: no such group
>>> b.groups() # 多个参数给我们一个元组
('python','2')

findall()

findall()函数在网络爬虫中使用最为频繁,它用于查找字符串中所有符合式的字符串,返回一个列表。代码如下

1
2
3
>>> python = 'python2 python3 are all python'
>>> print(re.findall('python',python))
['python', 'python', 'python']

split()

split()函数用于按某个字符将目标字符串分解成若干个部分,并将这些部的形式返回。代码如下:

1
2
3
>>> python = 'python2 python3 are all python'
>>> print(re.split(' ',python))
['python2', 'python3', 'are', 'all', 'python']

字符串本身就带有split()方法,可以直接使用。代码如下

1
2
3
>>> python = 'python2 python3 are all python'
>>> python.split(' ')
['python2', 'python3', 'are', 'all', 'python']

sub()

sub()函数用于将目标字符中的某些替换成指定字符串。代码如下:

1
2
3
>>> python = 'python2 python3 are all python'
>>> re.sub('python','java',python)
'java2 java3 are all java'

compile()

compile()是编译函数,将一个字符串编译为字节代码。通过预先编译,可以缩短正则表达式的匹配时间,因为未经预编译的字符串在匹配过程中需要由解释器来编译当匹配次数巨大时,该函数会非常有用。

文章作者: Techoc
文章链接: https://techoc.xyz/posts/577dc20f/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Techoc's

评论