Python 正则匹配
正则表达式(Regular Expression)是一种强大的字符串匹配工具,它具有强大的模式匹配和搜索功能。在Python中,我们可以使用re模块来使用正则表达式。
什么是正则表达式
正则表达式是一种用于描述字符串匹配模式的工具。它使用一种特殊的语法来描述字符串的模式,然后通过这个模式来匹配其他字符串。正则表达式可以用于搜索、替换字符串,以及验证字符串的合法性。
re 模块的基本用法
在Python中,我们可以使用re模块来使用正则表达式。首先,我们需要先导入re模块:
import re
接下来,我们可以使用re模块中的函数来操作正则表达式。
re.match() 函数
re.match() 函数用于从字符串的起始位置匹配一个模式。如果匹配成功,就返回一个匹配对象;如果失败,就返回None。
import re
pattern = r"hello"
string = "hello world"
match = re.match(pattern, string)
if match:
print("Match!")
else:
print("Not match!")
运行结果:
Match!
在上面的示例中,我们使用re.match()函数匹配了字符串的起始位置是否为”hello”,由于字符串”hello world”的起始位置正好是”hello”,所以匹配成功。
re.search() 函数
re.search() 函数用于在整个字符串中搜索匹配模式。如果匹配成功,就返回一个匹配对象;如果失败,就返回None。
import re
pattern = r"world"
string = "hello world"
search = re.search(pattern, string)
if search:
print("Match!")
else:
print("Not match!")
运行结果:
Match!
在上面的示例中,我们使用re.search()函数在字符串中搜索是否包含”world”,由于字符串”hello world”中包含”world”,所以匹配成功。
re.findall() 函数
re.findall() 函数用于在整个字符串中查找所有匹配模式的子字符串,并返回一个列表。
import re
pattern = r"o"
string = "hello world"
findall = re.findall(pattern, string)
print(findall)
运行结果:
['o', 'o', 'o']
在上面的示例中,我们使用re.findall()函数在字符串中查找所有”o”的子字符串,并返回一个包含所有匹配结果的列表。
正则表达式的语法
正则表达式的语法由一些特殊字符和元字符组成,它们用于描述字符串的模式。
特殊字符
.
:匹配任意字符,除了换行符。^
:匹配字符串的起始位置。$
:匹配字符串的结束位置。*
:匹配前一个模式的零次或多次。+
:匹配前一个模式的一次或多次。?
:匹配前一个模式的零次或一次。[]
:用于指定一个字符集,可以匹配其中任意一个字符。|
:用于指定多个模式中的一个。
元字符
\d
:匹配一个数字。\D
:匹配一个非数字。\w
:匹配一个字母、数字、或下划线。\W
:匹配一个非字母、数字、或下划线。\s
:匹配一个空白字符。\S
:匹配一个非空白字符。
实际应用
匹配邮箱
我们可以使用正则表达式来匹配邮箱地址:
import re
pattern = r"\w+@\w+\.\w+"
string = "example@gmail.com"
match = re.match(pattern, string)
if match:
print("Match!")
else:
print("Not match!")
运行结果:
Match!
在上面的示例中,我们使用正则表达式”\w+@\w+.\w+”来匹配邮箱地址,匹配成功。
替换字符
我们还可以使用正则表达式来替换字符串中的字符:
import re
pattern = r"\d+"
string = "The price is 20 dollars."
replace = re.sub(pattern, "100", string)
print(replace)
运行结果:
The price is 100 dollars.
在上面的示例中,我们使用正则表达式”\d+”来匹配数字,并将其替换为”100″,从而实现了替换字符的功能。
总结
正则表达式是一种非常强大的字符串处理工具,在Python中使用re模块可以方便地操作正则表达式。本文介绍了re模块的基本用法,正则表达式的语法,以及实际应用的示例。