本次测试包含了绝大部分Python的正则表达式的操作方式
下面为测试源代码:
复制代码
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92#!/usr/bin/python3 # -*- coding:UTF-8 -*- import re; # 签名的字符:r,表示将该字符串标记为原始字符串,它不包括转义字符 test_str = '415-555-0001 My number is 415-555-4221'; # 【简单匹配提取】 reg_1 = re.compile(r'ddd-ddd-dddd'); mo = reg_1.search(test_str); # 如果没有匹配到则返回:None print('我的电话号码是:' + mo.group()); # 415-555-4242 【匹配电话号码,并返回相应的号码】 # 【分组匹配提取】【可以得到多个提取的文本】 reg_2 = re.compile(r'(ddd)-(ddd-dddd)'); mo_2 = reg_2.search(test_str); # print(mo_2.groups()); # (415,55-4221) # print(mo_2.group()); # 匹配全部:415-555-4221 # print(mo_2.group(0)); # 匹配全部:415-555-4221 # print(mo_2.group(1), mo_2.group(2)); #:415 555-4221,从左到右,开始匹配, # 【使用转义符】 reg_3 = re.compile(r'((ddd))-(ddd-dddd)'); test_str_2 = 'My number is (415)-555-4221'; mo_3 = reg_3.search(test_str_2); # 打印结果,类似如上分组匹配输出; # 【使用管道匹配多个分组】 # 将匹配:Batman 或者Tina Fey,但只把第一匹配到的文本作为对象返回 # reg_4 = re.compile(r'Batman|Tina Fey'); # mo_4 = reg_4.search('Batman and Tina Fey'); # print(mo_4.group()); # Batman # # # 【使用问号(?)实现可选匹配[]】 # reg_5 = re.compile(r'Bat(wo)?man'); # ? 匹配零次或者一次 # mo_5 = reg_5.search('The Batwoman Adventures of Batman'); # print(mo_5.group()) # Batwoman 只以第一次匹配到的文本返回 # # #【 使用星号(*)匹配零次或多次】 # reg_6 = re.compile(r'Bat(wo)*man'); # mo_6 = reg_6.search('The Batwoman Adventures of Batman'); # print(mo_6.group()); # Batwoman,只以第一次匹配到的文本返回 # 【使用加号(+)匹配一次或多次】 # reg_7 = re.compile(r'Bat(wo)+man'); # mo_7 = reg_7.search('wo The Batwowowoman Adventures of Batman'); # print(mo_7.group()); # Batwowowoman,只以第一次匹配到的文本返回 # 【使用括号匹配】 # # 备注:Python所有的正则都是贪心匹配的,如果需要非贪心匹配在大括号后面加上? # reg_8 = re.compile(r'(Ha){2,4}?'); # mo_8 = reg_8.search('This HaHaHaHas OK'); # print(mo_8.group()); # HaHaHaHa 只以第一次匹配到的文本返回 # 【findall()】提取匹配到的所有内容:匹配到的内容,以列表的形式返回; # reg_9 = re.compile(r'ddd-dddd'); # mo_9 = reg_9.findall('125-7894 This Ok is 789-1451'); # print(mo_9); # ['125-7894', '789-1451'] # d 0-9的数字 # D 除0-9之外的任何字符 # w 任何字母,数字,下划线 # W 除字母,数字,下划线之后的任何字符 # s 空格,制表符,换行符 # S 除空格,制表符,换行符之外的任何字符 # 'r[aeionsde]' #匹配这些字符,'r[^aldjlass]' #匹配这些字符之外的任何字符 # 【使用.通匹配符】 # reg_10 = re.compile(r'.at'); # mo_10 = reg_10.search('Hat,cat,oat'); # print(mo_10.group());#Hat # # 【使用 .* 匹配任意字符】 # reg_11 = re.compile(r'.*at'); # mo_11 = reg_11.search('Hat,cat,oat'); # 匹配整个字符 # print(mo_11.group()); # Hat,cat,oat # 【使用 .* 匹配任意字符,如果添加re.DOTALL,就可以让句点字符匹配所有字符。即包含换行符后面的字符】 # reg_12 = re.compile(r'.*at', re.DOTALL);#如果同时用有多个参数,则用管道符号如:re.DOTALL|re.I; # mo_12 = reg_12.search('Hat,catnssoat'); # 匹配整个字符 # print(mo_12.group()); # Hat,cat ssoat(会自动换行显示) #【不区分大小写】,re.compile(r'w',re.I),传入re.IGNORECASE或re.I,则可以不区分大小写 #【替换字符串】通过正则的方式-替换字符串sub() # nameRegex=re.compile(r'Agent w+'); # res=nameRegex.sub('Cosumer','Agent Alice gave the secret documents to Agent Bob'); # print(res);#Cosumer gave the secret documents to Cosumer
最后
以上就是野性水池最近收集整理的关于Python实验六:正则表达式操作的全部内容,更多相关Python实验六内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复