一:学习内容

  • re.split函数
  • re.finditer函数
  • re.sub函数
  • group()分组
  • re.compile函数

二:字符串切割---re.split函数

需要导入包:import re

1.格式:re.split(pattern,string,flags=0)

2.功能:字符串切割

3.参数说明:
    pattern:匹配的正则表达式
    string:要匹配的字符串
    flags:标识位,用于控制正则表达式的匹配方式

4.举例:

str1 = "test is    a good girl"
print(str1.split(" "))            
print(re.split(r" +",str1))                      #可以看到一次性将所有空格都分隔掉了

三:re.finditer函数

需要导入包:import re

1.格式:re.finditer(pattern,string,flags=0)

2.功能:与findall类似,扫描整个字符串,返回的是一个迭代器

3.参数说明:

pattern:匹配的正则表达式
    string:要匹配的字符串
    flags:标识位,用于控制正则表达式的匹配方式

4.举例:

str3 = "test is a good girl!test is a good girl!test is a good girl!"
d = re.finditer(r"(test)",str3)
while True:
    try:
        l = next(d)
        print(l)
    except StopIteration as e:
        break

四:字符串的替换和修改---re.sub函数和re.subn函数

需要导入包:import re

1.格式:sub(pattern, repl, string, count=0, flags=0)    和    subn(pattern, repl, string, count=0, flags=0)

2.功能:在目标字符串中以正则表达式的规则匹配字符串,可以指定替换的次数,如果不指定,替换所有的匹配字符串

3.参数说明:

pattern:正则表达式(规则)
    repl:指定的用来替换的字符串
    string:目标字符串
    count:最多替换次数

4.sub和subn区别:sub()返回一个被替换的字符串,subn()返回一个元组(第一个元素是被替换的字符串,第二个元素表示被替换的次数)

5.举例:

str5 = "test is a good good good girl"
print(re.sub("(good)","nice",str5))
print(re.sub("(good)","nice",str5,count=2))
print(type(re.sub("(good)","nice",str5)))

print(re.subn("(good)","nice",str5))
print(re.subn("(good)","nice",str5,count=2))
print(type(re.subn("(good)","nice",str5)))

五:分组-group()

需要导入包:import re

1.概念:具有提取子串的功能,用()表示的就是分组

2.举例:

str6 = "010-87237214"
m =re.match(r"(\d{3})-(\d{8})",str6)
#使用序号获取对应组的信息,group(0)一直代表的原始字符串
print(m.group(0))
print(m.group(1))
print(m.group(2))
#查看匹配的各组的情况
print(m.groups())

3.?P<组名> 给组起名字

str7 = "010-87237214"
m =re.match(r"(?P<first>\d{3})-(?P<last>\d{8})",str7)
print(m.group(0))
print(m.group(1))
print(m.group("first"))
print(m.group(2))
print(m.group("last"))
#查看匹配的各组的情况
print(m.groups())

六:编译-compile()

需要导入包:import re

1.概念:当我们使用正则表达式时,re模块会干两件事:1、编译正则表达式,如果正则表达式本身不合法,会报错;2、用编译后的正则表达式去匹配

2.格式:re.compile(pattern,flags=0)

3.参数说明:

pattern:匹配的正则表达式
flags:标识位,用于控制正则表达式的匹配方式,它的值有:
    re.I  忽略大小写
    re.L  做本地化识别
    re.M  多行匹配,影响^和$
    re.S  使.匹配包括换行符在内的所有字符
    re.U  根据Unicode字符集解析字符,影响\w \W \b \B
    re.X  使我们以更灵活的格式理解正则表达式

4.举例:

pat = r"1[3456789]\d{9}"
re_tele = re.compile(pat)
str = "手机号码19966662112,fldsafdls18877221999lfalalsfdk13988218921dfsa"
re_tele.findall(str)

python3笔记二十三:正则表达式之其他函数的更多相关文章

  1. python3笔记二十三:正则表达式之元字符

    一:学习内容 匹配单个字符与数字:..[].^.\d.\D.\w.\W.\s.\S 匹配锚字符(边界字符):^.$.\A.\Z.\b.\B 匹配多个字符:(xyz) .x?.x*..*.x+.x{n} ...

  2. python3.4学习笔记(二十三) Python调用淘宝IP库获取IP归属地返回省市运营商实例代码

    python3.4学习笔记(二十三) Python调用淘宝IP库获取IP归属地返回省市运营商实例代码 淘宝IP地址库 http://ip.taobao.com/目前提供的服务包括:1. 根据用户提供的 ...

  3. (C/C++学习笔记) 二十三. 运行时类型识别

    二十三. 运行时类型识别 ● 定义 运行时类型识别(Run-time Type Identification, RTTI) 通过RTTI, 程序能够使用基类的指针或引用来检查(check)这些指针或引 ...

  4. python3笔记二十二:正则表达式之函数

    一:学习内容 re.match函数 re.search函数 re.findall函数 二:re.match函数 需要导入包:import re 1.格式:match(pattern,string,fl ...

  5. 学习笔记二十三——字符函数库cctype【转】

    本文转载自: 字符函数库cctype 在头文件cctype(ctype.h)中定义了一些函数原型,可以简化输入确定字符是否为大写字母.数字.标点符号等工作. 例如: 如果ch是一个字母,则isalph ...

  6. angular学习笔记(二十三)-$http(1)-api

    之前说到的$http.get和$http.post,都是基于$http的快捷方式.下面来说说完整的$http: $http(config) $http接受一个json格式的参数config: conf ...

  7. python3笔记二十四:Mysql数据库操作命令

    一:学习内容 Mysql操作命令:启动服务.停止服务.连接数据库.退出数据库.查看版本.显示当前时间.远程连接 数据库操作命令:创建数据库.删除数据库.切换数据库.查看当前选择的数据库 表操作命令:查 ...

  8. python3笔记二十一:时间操作datetime和calendar

    一:学习内容 datetime calendar 二:datetime 1.模块说明:可以理解为datetime基于time进行了封装,提供了各种使用的函数,datetime模块的接口更直接,更容易调 ...

  9. python3笔记十六:python匿名函数和高阶函数

    一:学习内容 lambda函数 map函数与reduce函数 filter函数 sorted函数 二:匿名函数-lambda 1.概念:不使用def这样的语句去定义函数,使用lambda来创建匿名函数 ...

随机推荐

  1. sql server join联结

    join学习起来有点乱,现做如下整理: table A id abc 1 a 2 b 3 c 4 d table B id abc 1 e 2 a 3 f 4 c --join或者inner join ...

  2. spring基于注解的IoC以及IoC的案例

    1.Spring中IoC的常用注解 1.1明确: (1)基于注解的配置和xml的配置要实现的功能都是一样的,都是要降低程序之间的耦合,只是配置的形式不一样 2.案例:使用xml方式和注解方式实现单表的 ...

  3. PHP高级进阶之路

    一:常见模式与框架 学习PHP技术体系,设计模式,流行的框架 常见的设计模式,编码必备 Laravel.ThinkPHP开发必不可少的最新框架 YII.Symfony4.1核心源码剖析 二:微服务架构 ...

  4. 关于ES5中的prototype与ES6中class继承的比较

    ES5:继承: 1.ES5:继承 通过原型链实现继承.子类的prototype为父类对象的一个实例,因此子类的原型对象包含指向父类的原型对象的指针,父类的实例属性成为子类原型属性 2.ES6 的继承 ...

  5. ABAP常用函数归纳

    转至:http://blog.csdn.net/forever_crazy/article/details/17707745 获取当前逻辑系统标识:OWN_LOGICAL_SYSTEM_GET 一.日 ...

  6. kafka核心原理总结

    新霸哥发现在新的技术发展时代,消息中间件也越来越受重视,很多的企业在招聘的过程中着重强调能够熟练使用消息中间件,所有做为一个软件开发爱好者,新霸哥在此提醒广大的软件开发朋友有时间多学习. 消息中间件利 ...

  7. 关于select的取值

    这篇博客,主要是记录我我所犯的错误,或者自己的写法不规范导致了错误,大家可以引以引以为鉴. 我要获取select当前的值,在IE9上我可以直接写document.getElementById(&quo ...

  8. pkg-config --libs libusb-1.0

    pkg-config --libs libusb-1.0 pkg-config --libs libusb-1.0 pkg-config --libs libusb-1.0

  9. 《编译原理》构造与正规式 (0|1)*01 等价的 DFA - 例题解析

    <编译原理>构造与正规式 (0|1)*01 等价的 DFA - 例题解析 解题步骤: NFA 状态转换图 子集法 DFA 的状态转换矩阵 DFA 的状态转图 解: 已给正规式:(0|1)* ...

  10. Tableau预测

    Tableau可以通过对现有的数据进行预测.