re库的使用

摘要:
N','PYDASCEDNDFCSNWESASNDE')4print˃˃˃PYDASCED输入最小匹配字符串importref=re.search(r'PY.*?       前一个字符1次或

一、re库的调用

import re

二、正则表达式类型

  • raw string类型(原生字符串类型,即不包括转义符类型):r'text'
  • string类型,更繁琐。

三、Re库主要功能函数

函数              说明

re.search()        在一个字符串中搜索匹配正则表达式的第一个位置,然后返回match对象

re.match()         从第一个字符串的开始位置起匹配正则表达式,返回match对象

re.findall()         搜索字符串,以列表类型返回全部能匹配的子串

re.split()         将一个字符串按照正则表达式匹配结果进行分割,返回列表类型

re.finditer()        搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象

re.sub()         在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串

①re.search(pattern,string,flags=0)

  • pattern:正则表达式的字符串或原生字符串表示
  • string:待匹配的字符串
  • flags:正则表达式使用时的控制标记

fiags常用标记:

  1. re.I re.IGNORECASE 忽略正则表达式的大小写,[A-Z]能够匹配小写字符
  2. re.M re.MULTILINE   正则表达式中的^操作符能够将给定字符串的每行当做匹配开始
  3. re.S re,DOTALL 正则表达式中的.操作符n能够匹配所有字符,默认匹配除换行外的所有字符
1 importre
2 
3 match = re.search(r'[1-9]d{5}','BIT 100081')
4 ifmatch:
5     print(match.group(0))
>>>100081

②re.macth(pattern,string,flags=0)

  • pattern:正则表达式的字符串或原生字符串表示
  • string:待匹配的字符串
  • flags:正则表达式使用时的控制标记
1 importre
2 match = re.match(r'[1-9]d{5}','100081 200012 BIT')
3 ifmatch:
4     print(match.group(0))
>>>100081

③re,findall(pattern,string,flags=0)

  • pattern:正则表达式的字符串或原生字符串表示
  • string:待匹配的字符串
  • flags:正则表达式使用时的控制标记
1 importre
2 
3 match = re.findall(r'[1-9]d{5}','BIT100081 ICD100085')
4 print(match)
>>>['100081', '100085'

④re.split(pattern,string,maxsplit=0,flags=0)

  • pattern:正则表达式的字符串或原生字符串表示
  • string:待匹配的字符串
  • maxsplit:最大分割数,剩余部分作为最后一个元素输出
  • flags:正则表达式使用时的控制标记
1 importre
2 
3 macth = re.split(r'[1-9]d{5}','BIT100081 ICD100085')
4 print(macth)
5 
6 macths = re.split(r'[1-9]d{5}','BIT100084 ICD100085' ,maxsplit=1)
7 print(macths)
>>>['BIT', ' ICD', '']
>>>['BIT', ' ICD100085']

⑤re.finditer(pattern,string,flags=0)

  • pattern:正则表达式的字符串或原生字符串表示
  • string:待匹配的字符串
  • flags:正则表达式使用时的控制标记
1 importre
2 
3 macth = re.finditer(r'[1-9]d{5}','BIT100084 ICD100085')
4 for i inmacth:
5     ifi :
6         print(i.group(0))
>>>100084
10008

⑥re.sub(pattern, repl, string, count=0, flags=0)

  • pattern:正则表达式的字符串或原生字符串表示
  • repl:替换字符串的字符串
  • string:待匹配的字符串
  • count:替换的次数
  • flags:正则表达式使用时的控制标记
1 importre
2 
3 macth = re.sub(r'[1-9]d{5}','110021','BIT100084 ICD100085')
4 print(macth)
5 
6 macths = re.sub(r'[1-9]d{5}','110021','BIT100084 ICD100085',count=1)
7 print(macths)
>>>BIT110021 ICD110021
>>>BIT110021 ICD10008

四、正则表达式的另外一种等价用法

使用re.compile()方法将正则表达式编译成正则表达式对象,正则表达式的六个方法都能使用

r = re.compile(pattern,flags=0)

  • pattern:正则表达式的字符串或原生字符串表示
  • flags:正则表达式使用时的控制标记
1 importre
2 
3 res = re.compile(r'[1-9]d{5}')
4 macth = re.search(res,'BIT100084 ICD100085')
5 ifmacth:
6     print(macth.group(0))
7 
8 f = re.match(res,'100084BIT 100085IDC')
9 iff:
10     print(f.group(0))
11 
12 d = re.findall(res,'100084BIT 100085IDC')
13 print(d)
>>>100084
>>>100084
>>>['100084', '100085'

五、Re库的Match对象

1、match对象的属性

.string        待匹配的文本

.re          匹配时使用的pattern对象(正则表达式)

.pos         正则表达式搜索文本的开始位置

.endpos       正则表达式搜索文本的结束位置

2、match对象的方法

.group(0)      获得匹配后的字符串

.start()        匹配字符串在原始字符串的开始位置

.end()        匹配字符串在字符串的结束位置

.span()       返回(.start(),end.())

六、贪婪匹配

Re库默认采用贪婪匹配,即输出匹配最长的字符串

1 importre
2 
3 f = re.search(r'PY.*?N','PYDASCEDNDFCSNWESASNDE')
4 print(f.group(0))
>>>PYDASCED

输入最小匹配字符串

importre

f = re.search(r'PY.*?N','PYDASCEDNDFCSNWESASNDE')
print(f.group(0))
>>>PYDASCED

最小匹配操作符

*?        前一个字符0次或者无数次扩展,最小匹配

+?        前一个字符1次或者无数次扩展,最小匹配

??        前一个字符0次或1次扩展,最小匹配

{m,n}?      扩展前一个字符m至n次(含n),最小匹配

免责声明:文章转载自《re库的使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇django数据库的增删改查GridView一般换行与强制换行下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

《Linux总线、设备与驱动》USB设备发现机制

说明:本分析基于mstar801平台Linux2.6.35.11内核,其他内核版本仅供参考。 一、程序在内核中的位置 1.usb host做为pci总线下的一个设备存在(嵌入式系统中有可能也会直接挂在CPU上);这部分驱动由厂家实现,本分析以mstar为例。 2.USB总线驱动 kernel/drivers/usb/core/driver.c [cp...

xStream完美转换XML、JSON(转)

xStream框架 xStream可以轻易的将Java对象和xml文档相互转换,而且可以修改某个特定的属性和节点名称,而且也支持json的转换; 前面有介绍过json-lib这个框架,在线博文:http://www.cnblogs.com/hoojo/archive/2011/04/21/2023805.html 以及Jackson这个框架,在线博文:ht...

JDBC之查询

案例1:查询所有用户的信息,封装到一个List里面 1 String url="jdbc:mysql://localhost:3306/nz201"; 2 String user="root"; 3 String password="root"; 4 5 Connection...

TreeSet使用

TreeSet使用 TreeSet是有序的集合,自动按照升序排序。 特性说明 实现了SortedSet接口,不允许重复的元素。 TreeSet里面的元素按照增序排列 TreeSet不会按序保存插入的元素,而是按照键值对排序(自动增序) 如果以来自然顺序,那么TreeSet只允许插入相同类型并且可以比较的元素。 操作说明 添加元素 import jav...

Hibernate的查询语言之HQL(一)——快速入门

  Hibernate提供异常强大的查询体系,使用Hibernat有多种查询方式可以选择:即可以使用Hibernate的HQL查询,也可以使用条件查询,甚至可以使用原生的SQL查询语句。不仅如此, Hibernate还提供了一种数据过滤功能,这些都用于筛选目标数据。   Hibernate是 Hibernate Query Language的缩写,HQL的...

java中String编码转换 UTF-8转GBK

1.GB2312等都可以用GBK代替.2.new String(row.getBytes("GB2312"), "UTF8") 这种写法是不对的, 中文仍然会乱码. 方案:解决GBK字符转UTF-8乱码问题: https://www.cnblogs.com/xijin-wu/p/5884822.html 彻底搞懂编码 GBK 和 UTF8:https:/...