博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python正则表达式
阅读量:5298 次
发布时间:2019-06-14

本文共 1987 字,大约阅读时间需要 6 分钟。

摘录:正则表达式(RE)为高级文本模式匹配,以及搜索-代替等功能提供了基础。正则表达式(RE)是一些有字符和特殊符号组成的字符串,它们描述了这些字符和字符的某种重复方式,因策能按某种模式匹配一个有相似特征的字符串的集合,因策能按某模式匹配一系列有相似特征的字符串。

1. 下面是一些最常用的元字符(metacharacters),正是他们赋予了正则表达式强大的功能和灵活性。

Symbols 说明 举例
leteral 匹配字符串的值 foo
re1|re2 匹配正则表达式re1或re2 foo|bar
.  匹配任何字符(换行符除外) b.b
^ 匹配字符串的开始 ^Dear
$ 匹配字符串的结尾 /bin/*sh$
* 匹配前面出现的正则表达式零次或多次 [A-Za-z0-9]*
+ 匹配前面出现的正则表达式一次或多次 [a-z]+\.com
? 匹配前面出现的正则表达式零次或一次 goo+
{N} 匹配前面出现的正则表达式N次 [0-9]{3}
{M,N} 匹配重复出现M次到N次的正则表达式 [0-9]{5,9}
[...] 匹配字符组中出现的任意一个字符 [aeiou]
[..x-y..] 匹配从字符x到y中的任意一个字符 [0-9],[A-Za-z]
[^...] 不匹配此字符集中出现的任何一个字符,包括某一范围的字符(如果此字符集中出现) [^aeiou],[^A-Za-z0-9_]
(*|+|?|{})? 用于上线出现的任何"非贪婪"版本重复匹配次数副号(*,+,?,{}) .*?[a-z]
(...) 匹配封闭括号中正则表达式(RE),并保存为子组 ([0-9]{3})?, f(oo|u)bar
\a 匹配任何数据,和[0-9]一样,(\D是\d的反义:然和非数字符) data\d+.txt
\w 匹配然和数据字母字符,和[A-Za-z0-9]相同(\W是\w的反义) [A-Za-z_]\w+
\s 配置任何空白符,和[\n\t\r\v\f]相同,(\S是\s的反义) of\sthe
\b 匹配单词边界(\B是\b的反义) \bThe\b
\nn 匹配以保存的子组(请参考上面的正则表达式副号:(...)) price:\16
\c 逐一匹配特殊字符c(即,取消它的特殊含义,按字面匹配) \., \\, \*

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2. python处理正则表达式的模块

  re模块的函数

  compile(pattern, flags=0):对正则表达式pattern进行编译,并返回一个regex对象

  re模块的函数和regex对象的方法

  match(pattern, string, flags=0):尝试用正则表达式模式pattern匹配字符串string,如果匹配成功,则返回一个匹配对象;否则返回None

  search(pattern, string, flags=0):在字符串string中查找正则表达式模式pattern的第一次出现,如果匹配成功,则返回一个匹配对象。否则返回None

  findall(pattern, string[, flags]):在字符串string中查找正则表达式模式pattern的所有(非重复)出现:返回一个匹配对象的列表。

  finditer(pattern, string[, flags]):和findall()相同,但返回的不是离别而是迭代器:对于每个匹配该迭代器返回一个匹配对象

  匹配对象的方法

  split(pattern, string, max=0):根据正则表达式pattern中的分隔符吧字符string分割为一个列表,返回成功匹配的列表,最多分割max次

  sub(pattern, repl, string, max=0):把字符串string中左右匹配正则表达式pattern的地方替换成字符串rep1,如果max值没有给出,则对所有匹配的地方进行替换

  group(num=0):返回全部匹配对象(或指定编号是num的子组)

  groups():返回一个包含全部匹配的子组的元组(如果没有匹配成功,就返回一个空元组)

 

3. 正则表达式示例

>>> import re

>>> data = 'Thu Feb 15 17:46:04 2007::uzifzf@dpyivihw.gov::1171590364-6-8'
>>> patt = '^(Mon|Tue|Wed|Thu|Fri|Sat|Sun)'
>>> m = re.match(patt, data)
>>> m.group()
'Thu'
>>>

转载于:https://www.cnblogs.com/dw729/archive/2013/04/01/2993914.html

你可能感兴趣的文章
C++ 删除字符串的两种实现方式
查看>>
电容选型
查看>>
ORA-01502: 索引'P_ABCD.PK_WEB_BASE'或这类索引的分区处于不可用状态
查看>>
Spring EL hello world实例
查看>>
百度地图API地理位置和坐标转换
查看>>
MyBatis学习总结(六)——调用存储过程
查看>>
code-代码平台服务器路径
查看>>
离线安装 Visual Studio Express 而不下载整个镜像文件的方法(转载)
查看>>
2017-2018-2偏微分方程复习题解析10
查看>>
Java抽象类和接口的比较
查看>>
web技术工具帖
查看>>
一次性搞明白 service和factory区别
查看>>
iOS UI控件5-UIPickerView
查看>>
深入Java虚拟机读书笔记第三章安全
查看>>
素数筛选法
查看>>
php连接postgresql数据库
查看>>
Visual studio之C# 调用系统软键盘(外部"osk.exe")
查看>>
移动应用开发选型:向左还是向右?
查看>>
开发进度一
查看>>
十天冲刺(6)
查看>>