概述
本次测试包含了绝大部分Python的正则表达式的操作方式
下面为测试源代码:
#!/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实验六:正则表达式操作所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复