1. Python RE 正则表达式模块介绍
正则表达式是用于匹配字符模式的一种工具,它可以让我们在字符串中查找和操作特定模式的文本。Python RE(Regular Expression)是一个非常强大的模块,它提供了一些函数用于处理正则表达式。
1.1 Python RE 模块的工作原理
Python RE 模块使用正则表达式来匹配和操作字符串中的模式。通过使用这些模式,我们可以对字符串进行搜索、替换和分割等操作。
正则表达式中的一些特殊字符用来表示模式:
. 表示匹配除换行符之外的任意一个字符。
* 表示匹配前一个字符出现 0 次或多次。
+ 表示匹配前一个字符出现 1 次或多次。
? 表示匹配前一个字符出现 0 次或 1 次。
{m} 表示匹配前一个字符出现 m 次。
{m,n} 表示匹配前一个字符出现 m 到 n 次。
[ ] 表示匹配内部列举的任意一个字符。
| 表示或者。
^ 表示匹配字符串开始位置。
$ 表示匹配字符串结束位置。
\ 转义字符。
2. Python RE 模块函数介绍
2.1 re.match(pattern, string)
re.match() 函数尝试从字符串的起始位置匹配一个模式,如果匹配成功就返回一个匹配对象;否则返回 None。
import re
result = re.match(r'hello', 'hello world')
if result:
print(result.group())
else:
print('匹配失败')
输出结果是:
hello
在 re.match() 函数中,参数 pattern 表示正则表达式的模式,参数 string 表示需要被匹配的字符串。
在以上例子中,使用了正则表达式 r'hello' 匹配字符串 'hello world',因为字符串的起始位置是 'hello',所以匹配成功并返回了匹配对象。
2.2 re.search(pattern, string)
re.search() 函数用于在字符串中查找匹配的模式,如果匹配成功就返回一个匹配对象;否则返回 None。
import re
result = re.search(r'world', 'hello world')
if result:
print(result.group())
else:
print('匹配失败')
输出结果是:
world
在 re.search() 函数中,参数 pattern 表示正则表达式的模式,参数 string 表示需要被匹配的字符串。
在以上例子中,使用了正则表达式 r'world' 查找字符串 'hello world' 中的模式,因为字符串中存在 'world' 这个模式,所以匹配成功并返回了匹配对象。
2.3 re.findall(pattern, string)
re.findall() 函数用于在字符串中查找所有匹配的模式,并返回一个列表。
import re
result = re.findall(r'o', 'hello world')
print(result)
输出结果是:
['o', 'o']
在 re.findall() 函数中,参数 pattern 表示正则表达式的模式,参数 string 表示需要被匹配的字符串。
在以上例子中,使用了正则表达式 r'o' 查找字符串 'hello world' 中所有的 'o',最后将所有匹配的结果放在一个列表中返回。
3. Python RE 模块实例
3.1 匹配电子邮件地址
import re
email = 'abc@163.com'
if re.match(r'^([a-zA-Z0-9_\.-]+)@([a-zA-Z0-9_\.-]+)\.([a-zA-Z\.]{2,6})$', email):
print('合法的电子邮件地址')
else:
print('不合法的电子邮件地址')
以上代码中,正则表达式 r'^([a-zA-Z0-9_\.-]+)@([a-zA-Z0-9_\.-]+)\.([a-zA-Z\.]{2,6})$' 可以用来匹配电子邮件地址。其中:
^ 表示匹配字符串开始位置。
$ 表示匹配字符串结束位置。
[a-zA-Z0-9_\.-]+ 表示匹配一个或多个大小写字母、数字、下划线、点号或破折号。
\. 转义字符,用于匹配点号。
{2,6} 表示匹配前面的字符或字符集出现 2 到 6 次,这里表示匹配长度为 2 到 6 的字母或点号。
以上代码中的正则表达式可以匹配的电子邮件地址格式如下:
xxxxxx@xxxxxx.xxx
3.2 匹配 IPv4 地址
import re
ip = '192.168.1.1'
if re.match(r'^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$', ip):
print('合法的 IPv4 地址')
else:
print('不合法的 IPv4 地址')
以上代码中,正则表达式 r'^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$' 可以用来匹配 IPv4 地址。其中:
(2[0-4]\d|25[0-5]|[01]?\d\d?) 表示匹配 0 到 255 之间的数字。
| 表示或者。
(2[0-4]\d|25[0-5]|[01]?\d\d?)\. 表示匹配前面的数字并且后面必须是点号。
{3} 表示匹配前面的字符或字符集出现 3 次。
以上代码中的正则表达式可以匹配的 IPv4 地址格式如下:
xxx.xxx.xxx.xxx
4. 总结
Python RE 正则表达式模块可以帮助我们处理字符串中的特定模式。在本文中,我们介绍了 Python RE 模块的工作原理和几个常用的函数。我们还给出了两个实例,展示了如何使用正则表达式匹配电子邮件地址和 IPv4 地址。