我是靠谱客的博主 野性水池,最近开发中收集的这篇文章主要介绍Python实验六:正则表达式操作,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本次测试包含了绝大部分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实验六:正则表达式操作所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部