Python正则表达式特殊字符详解与实战案例

七月
七月
发布时间:2026-10-15| 5人浏览过
原创

本文详解Python中正则表达式的特殊字符用法,包括\d、\w、\s及边界匹配符\A和\Z。通过三个实战案例演示如何判断字符串是否含数字、移除数字、检测首尾字符以及计算去空格后的真实长度,帮助开发者掌握正则表达式在字符串处理中的核心技巧。

要实现高效的字符串匹配,必须借助正则表达式模块,其核心在于匹配规则与目标字符串的配合。在模块和字符串已确定的前提下,匹配规则的灵活性决定了匹配效果。本节将重点介绍正则表达式中的特殊字符,掌握这些字符即可精准提取所需数据。

正则表达式中的特殊字符

特殊字符描述
\d匹配任何十进制的数字,与[0-9]一致
\D匹配任意非数字
\w匹配任何字母数字下划线及unicode字符集
\W匹配非字母数字的数据以及下划线
\s匹配任何空格字符,与 [\n \t \r \v \f] 相同
\S匹配任意非空字符
\A匹配字符串的起始
\Z匹配字符串的结束
.匹配任何字符(除了 \n 之外);也叫做通配符

正则表达式的使用

下面通过一个具体案例,展示上述特殊字符的实际应用方法。

import re

test_data = "My name is Neo, I'm 30 years old."		# 将一串字符串赋值给变量 test_data
result_int = re.findall('\d', test_data)	# 使用 findall 函数并传入 '\d' 的匹配规则匹配 test_data(只匹配数字)
result_Space = re.findall('\s', test_data)	# 使用 findall 函数并传入 '\d' 的匹配规则匹配 test_data(只匹配空格)
result_str = re.findall('\w', test_data)	# 使用 findall 函数并传入 '\d' 的匹配规则匹配 test_data(匹配字符串)
result_str_start = re.findall('\AMy', test_data)			# 匹配开头为 My 的字符串
result_str_start_null = re.findall('\AMya', test_data)		# 匹配开头为 Mya 的字符串(不存在 mya ,返回空列表)
result_str_end = re.findall('old.\Z', test_data)			# 匹配结尾为 old. 的字符串
result_str_end_null = re.findall('zold.\Z', test_data)		# 匹配结尾为 zold. 的字符串(不存在 zold ,返回空列表)
result_all = re.findall('.', test_data)		# 匹配除了 \n 之外的所有字符(包含空格)

print(result_int)
print(result_Space)
print(result_str)		# 从结果上来看 \w 要比 \d 更高级一些,不仅匹配了 str,也匹配了 int(实际上这里的int依然是字符串)
print(result_str_start)
print(result_str_start_null)
print(result_str_end)
print(result_str_end_null)

# >>> 执行结果如下
# >>> ['3', '0']
# >>> [' ', ' ', ' ', ' ', ' ', ' ', ' ']
# >>> ['M', 'y', 'n', 'a', 'm', 'e', 'i', 's', 'N', 'e', 'o', 'I', 'm', '3', '0', 'y', 'e', 'a', 'r', 's', 'o', 'l', 'd']
# >>> ['My']
# >>> []
# >>> ['old.']
# >>> []
# >>> ['M', 'y', ' ', 'n', 'a', 'm', 'e', ' ', 'i', 's', ' ', 'N', 'e', 'o', ',', ' ', 'I', "'", 'm', ' ', '3', '0', ' ', 'y', 'e', 'a', 'r', 's', ' ', 'o', 'l', 'd', '.']

正则小案例 - 1

1、编写一个函数,用于检测传入的参数中是否包含数字。

2、编写一个函数,检测传入参数是否含有数字,若包含则将其移除。

import re


def have_number(data):      # 定义一个判断是否存在数字的函数
    result = re.findall('\d', data)     # 利用 re 模块的 findall 函数的 \d 规则判断传入的 data 是否存在数字
    print(result)
    for i in result:        # 利用 for 循环 判断 result 的结果,如果存在返回 True ;反之返回 False
        return True
    return False

def remove_number(data):
    result = re.findall('\D', data)
    print(result)
    return ' '.join(result)


if __name__ == '__main__':
    test_data_1 = "My name is Neo, I'm 30 year's old."
    test_data_2 = "it's a beautiful day to be with you"
    result = have_number(test_data_1)
    print(result)
    result = remove_number(test_data_1)
    print(result)
    result = re.findall('\W', test_data_2)      # 匹配非字母数字的数据以及下划线
    print(result)

运行结果如下图所示:

正则小案例 - 2

1、定义 startwith 函数,用于判断传入数据是否位于字符串的开头。

2、定义 endwith 函数,用于判断传入数据是否位于字符串的结尾。

import re


def startswith(sub, data):
    _sub = '\A{}'.format(sub)
    result = re.findall(_sub, data)

    for i in result:
        return True
    return False

def endswith(sub, data):
    _sub = '{}\Z'.format(sub)
    result = re.findall(_sub, data)

    if len(result) == 0:
        return False
    else:
        return True
    
    
if __name__ == '__main__':
    result = startswith('My', test_data_1)
    print(result)
    result = endswith('old.', test_data_2)
    print(result)

执行结果如下:

正则小案例 - 3

1、Python 内置函数 len() 用于获取字符串长度,但当字符串中包含空格时,空格也会被计入长度。

2、结合正则表达式知识,定义一个函数来计算字符串去除空格后的真实长度。

import re


def real_len(data):
    result = re.findall('\S', data)
    return len(result)


if __name__ == '__main__':
    test_data_1 = "My name is Neo, I'm 30 year's old."
    test_data_2 = "it's a beautiful day to be with you"

    print(len(test_data_2))
    result = real_len(test_data_2)
    print(result)

运行结果如下:

以上为 Python 语法学习中关于正则表达式使用的详细解析,更多 Python 正则表达式相关内容,欢迎查阅本站其他文章。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。