脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - Python语法学习之正则表达式的使用详解

Python语法学习之正则表达式的使用详解

2022-11-30 11:06渴望力量的哈士奇 Python

要想成功的进行字符串的匹配需要使用到正则表达式模块,正则表达式匹配规则以及需要被匹配的字符串。本文详细为大家介绍了如何利用正则表达式实现字符的匹配,感兴趣的可以了解一下

要想成功的进行字符串的匹配需要使用到正则表达式模块,正则表达式匹配规则以及需要被匹配的字符串。在这三个条件中,模块与字符串都是准备好的,只有匹配规则异常的灵活,而今天这个章节就是认识一下正则表达式中的特殊字符,通过这些字符就可以针对我们想要的数据进行匹配。

正则表达式中的特殊字符

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

正则表达式的使用

接下来看一个小案例,帮助我们了解这些 特殊字符的使用方法 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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、定义一个函数,判断传入参数是否含有数字,如果有则移除。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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)

运行结果如下图:

Python语法学习之正则表达式的使用详解

正则小案例 - 2

1、定义一个 startwith 函数 判断传入数据是否是字符串的开头

2、定义一个 endwith 函数 判断传入数据是否是字符串的结尾

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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)

执行结果如下:

Python语法学习之正则表达式的使用详解

正则小案例 - 3

1、python 内置函数 len() 是可以获取到字符串的长度的,但是当字符串中存在着空格符号的时候也会计算在长度内。

2、利用正则的知识,定义一个计算字符串真实长度的函数

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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正则表达式的资料请关注服务器之家其它相关文章!

原文链接:https://blog.csdn.net/weixin_42250835/article/details/124204174

延伸 · 阅读

精彩推荐
  • Python基于python 开立方的注意事项说明

    基于python 开立方的注意事项说明

    这篇文章主要介绍了基于python 开立方的注意事项说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    daxiaofan8482021-09-18
  • PythonPython数据类型转换汇总

    Python数据类型转换汇总

    这篇文章主要给大家分享的是Python数据类型转换汇总,int,float相互转换、int,string相互转换、float,string相互转换、string,list相互转换等常见内容,需要的小伙...

    Mar丶流年10262022-10-18
  • PythonPython使用pydub库对mp3与wav格式进行互转的方法

    Python使用pydub库对mp3与wav格式进行互转的方法

    今天小编就为大家分享一篇Python使用pydub库对mp3与wav格式进行互转的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    白学家Lynn11382021-05-13
  • Pythoncolab中修改python版本的全过程

    colab中修改python版本的全过程

    日 对于没有服务器的研究生来说,Colab无疑是性价比最高的GPU选择,下面这篇文章主要给大家介绍了关于如何利用colab修改python版本的相关资料,需要的朋友可...

    mh--5962022-11-29
  • Pythonpython实现备份目录的方法

    python实现备份目录的方法

    这篇文章主要介绍了python实现备份目录的方法,实例总结了Python实现备份目录的三种常用技巧,具有一定参考借鉴价值,需要的朋友可以参考下...

    不是JS7012020-07-28
  • PythonPython如何测试stdout输出

    Python如何测试stdout输出

    这篇文章主要介绍了Python如何测试stdout输出,帮助大家更好的理解和学习Python,感兴趣的朋友可以了解下 ...

    D6112020-08-11
  • Pythonpython人工智能TensorFlow自定义层及模型保存

    python人工智能TensorFlow自定义层及模型保存

    这篇文章主要为大家介绍了python人工智能TensorFlow自定义层及模型保存示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步...

    Swayzzu10952022-02-27
  • PythonNumpy 数据处理 ndarray使用详解

    Numpy 数据处理 ndarray使用详解

    这篇文章主要为大家介绍了Numpy 数据处理 ndarray使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪...

    ZacheryZHANG11202022-08-29