Python re正则表达式常用函数

Python re正则表达式常用函数,第1张

Python re正则表达式常用函数
  • re.match()
    • 示例一
    • 示例二
  • re.search()
    • 示例一
    • 示例二
  • re.findall()
    • 示例一
    • 示例二
    • 示例三
  • re.sub()
    • 示例一
    • 示例二

re.match()

调用方法:

re.match(pattern, string, flags=0)

用法说明:
该函数在字符串的起始位置处进行匹配,若匹配到则返回该值,若没有匹配到,则返回None。可以匹配到,但是不在字符串的起始位置,仍旧会返回None。代码如下:

示例一
import re

str1 = "I want to be a scientist"
pattern = "I"
result = re.match(pattern, str1)
print(result)
"""
result:

"""

可以看到,我们成功地在字符串起始位置处匹配到了字符I

示例二
import re

str1 = "I want to be a scientist"
pattern = "to"
result = re.match(pattern, str1)
print(result)
"""
result:
None
"""

当我们把pattern换为to时,即使需要被匹配的字符串中含有to,但是有于to并不处于被匹配字符串的起始位置,因此匹配不到,所以返回值为None

re.search()

调用方法:

re.search(pattern, string, flags=0)

用法说明:
扫描整个 字符串,找到匹配样式的第一个位置,并返回一个相应的 匹配对象。如果没有匹配,就返回一个None。 注意这和找到一个零长度匹配是不同的。

示例一
import re

str1 = "I want to be a scientist"
pattern = "to"
result = re.search(pattern, str1)
print(result)
"""
reuslt:

"""

可以看到,之前我们使用re.match()函数时没有能够匹配到to,当我们使用re.search()函数时我们成功地匹配到了字符to。可以说,re.search()函数的功能是包含re.match()函数的。因此在实际应用时,推荐使用re.search()函数。

示例二
import re

str1 = "I am I, I am the colorful firework in the sky"
pattern = "I"
result = re.search(pattern, str1)
print(result)
"""
result:

"""

当我们匹配字符I时,会匹配到从左向右的第一个字符对象I。这与re.serach()函数的用法说明一致。

re.findall()

调用方法:

re.findall(pattern, string, flags=0)

用法说明:
扫描整个 字符串,找到所有满足匹配样式的字符,将它们集合在一起以列表形式返回。其中这个返回的列表包含空的结果(没有匹配到的结果)。

示例一
import re

str1 = "The telephone number of police in China is 110, and the telephone number of emergency is 120."
pattern = "\d+"
result = re.findall(pattern, str1)
print(result)
"""
result:
['110', '120']
"""

可以看到。通过这种匹配方式,我们成功地找出了一个字符串中的所有数字对象,并将它们集合起来作为一个列表对象进行了返回。

示例二
import re

str1 = "I got 1.0, and my classmate got 2.0."
pattern = "\d+"
result = re.findall(pattern, str1)
print(result)
"""
result:
['1', '0', '2', '0']
"""

我们是想通过匹配获取1.02.0这两个数字的。然而事与愿违,我们获得的是四个独立的数字,怎么办呢?应采用如下代码:

import re

str1 = "I got 1.0, and my classmate got 2.0."
pattern = "\d.\d"
result = re.findall(pattern, str1)
print(result)
"""
result:
['1.0', '2.0']
"""

可以看到,我们成功地获取到了我们需要的数字。

示例三
import re

str1 = "I got 1.0, and my classmate got 2.0."
pattern = "\d\d"
result = re.findall(pattern, str1)
print(result)
"""
result:
[]
"""

当我们找不到匹配对象时会返回一个空的列表对象。这与re.findall()函数的用法说明一致。

re.sub()

调用方法:

re.sub(pattern, repl, string, count=0, flags=0)

用法说明:
扫描整个 字符串,找出所有符合pattern写法的对象,并使用repl替换。

示例一
import re

str1 = "The rain in Spain"
str2 = re.sub("\s", "5", str1)
print(str2)
"""
result:
The5rain5in5Spain
"""

我们使用字符5替换了字符串中所有的空格。

示例二

关于参数count,默认值为0,表示替换所有的符合要求的pattern对象。如果我们设置了该参数,比如这里我们设置count=2,那么程序会只替换前两个出现的满足要求的pattern对象。

import re

str1 = "The rain in Spain"
str2 = re.sub("\s", "5", str1, count=2)
print(str2)
"""
result:
The5rain5in Spain
"""

可以看到,代码运行的结果保留了第三个出现的空格。

正则表达式的常用函数后期会不断更新,最后更新日期2022.04.27.

码字不易,如果大家觉得有用,就请点个赞让更多的人看到吧~

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/786349.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-05
下一篇 2022-05-05

发表评论

登录后才能评论

评论列表(0条)

保存