Python学习 :正则表达式
正则表达式
python 使用正则表达式(re)来进行匹配引擎搜索
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”
关于正则表达式,必须先学会它的元字符
元字符 : ^ $ * + ? { } [ ] | ( ) \
. 匹配除\n(换行符)以外的任何字符,若指定flag DOTALL,则匹配任意字符,包括换行
s = re.findall('b...u', 'www.baidu.com www')
>>> ['baidu']
^ 匹配字符开头,若指定flags MULTILINE,这种也可以匹配上(r"^a","\nabc\neee",flags=re.MULTILINE)
s = re.findall('^w.w', 'www.baidu.com wWw')
>>> ['www']
$ 匹配字符结尾,或e.search("foo$","bfoo\nsdfsf",flags=re.MULTILINE).group()也可以
s = re.findall('w.w$', 'www.baidu.com wWw')
>>> ['wWw']
* 匹配*号前的字符0次或多次
s = re.findall('abc*', 'abccccccc')
>>> ['abcccccc']
s = re.findall('abc*', 'ab')
>>> ['ab']
+ 匹配前一个字符1次或多次
s = re.findall('abc+', 'abccccccc')
>>> ['abcccccc']
? 匹配前一个字符1次或0次
s = re.findall('abc?', 'abccccccc')
>>> ['abc']
{n} 匹配前一个字符n次,即前一个字符至少出现n次
s = re.findall('abc{2}', 'abccccccc')
>>> ['abcc']
{n,m} 匹配前一个字符n到m次
s = re.findall('abc{2,3}', 'abccccccc')
>>> ['abccc']
| 匹配|左或|右的字符
s = re.findall('abc|ABC', 'abcABC')
>>> ['abc', 'ABC']
() 提取括号中的内容
s = re.findall('(bai)', 'www.baidu.com')
>>> ['bai']
[ ] 字符集:1、[ab] 取a或b 2、字符集里的符号没有特殊的意义 3、尖角号^取反 4、选择出某种元素
# 1、[] 里面的元素取其一
s = re.findall('[aid]', 'www.baidu.com')
>>>['a', 'i','d']
# 2、消除符号的特殊意义
s = re.findall('[*]', 'abccccccc*')
>>>['*']
# 3、取反
s = re.findall('[^abc]', 'abcABC')
>>>['A', 'B', 'C']
# 4、选择元素(数字或字母)
s = re.findall('[a-z]', 'ab123c41d2ABeC')
>>>['a', 'b', 'c', 'd', 'e']
\ 反斜杠后边跟元字符去除特殊功能,反斜杠后边跟普通字符实现特殊功能
通用字符
\A 只从字符开头匹配,re.search("\Aabc","alexabc") 是匹配不到的
\Z 匹配字符结尾,同$
\D 匹配非数字
\S 匹配任何非空白字符
\W 匹配非[A-Za-z0-9]
\d 匹配数字0-9,十进制数字
\w 匹配[A-Za-z0-9],匹配任一字母、数字、下划线
\s 匹配空白字符、\t、\n、\r , re.search("\s+","ab\tc1\n3").group() 结果 '\t'
模式修正符,一般放在最后位置
I re.I 不区分大小写
M re.M 多行匹配,改变'^'和'$'的行为
S re.S 点任意匹配模式,改变'.'的行为
常用的匹配语法
re.findall() # 完全匹配,把所有匹配到的字符放到以列表中的元素返回
re.findall('com','www.baidu.com map.baidu.com')
>>> ['com', 'com'] re.match() # 从头开始匹配
re.match('com','www.baidu.com map.baidu.com')
>>> None re.search() # 搜索匹配,仅返回一个结果;通过调用group()方法得到匹配的字符串,如果字符串没有匹配,则返回None。
re.search('com','www.baidu.com map.baidu.com').group()
>>> com re.split() # 按照能够匹配的子串将字符串分割后返回列表。maxsplit用于指定最大分割次数,不指定使用默认值0将全部分割
re.split('\d','www.1baidu2.3com',2) # 默认为0,即全部分隔;指定次数后只分隔两次
>>> ['www.', 'baidu', '.3com']
re.split(' ','www.baidu.com map.baidu.com') # 分隔空格
>>> ['www.baidu.com', 'map.baidu.com'] re.sub() # 匹配字符并进行替换
re.sub('\d','ai','www.b1du.com ',1) # 替换一次
>>> www.baidu.com
re.subn() # 与 sub 函数完全一致,只不过其返回值是包括两个元素的元组:(new_string, number);第一个返回值 new_string 为sub 函数的结果,第二个 number 为匹配及替换的次数。
ret=re.subn('\d','ai','www.b1du.com map.b2du.com',2) # 替换两次
>>> ('www.baidu.com map.baidu.com', 2)
re 模块的两种匹配模式
贪婪模式:尽可能多的去匹配
惰性模式:尽可能少的去匹配(后面加?号来限制)
Python学习 :正则表达式的更多相关文章
- python学习——正则表达式
正则表达式 正则表达式的主要作用就是对字符串进行匹配,通过匹配,进行筛选,选择出符合规则的字符串.其实正则表达式的作用就像是一个过滤器一样.你输入好自己的 ...
- python学习 正则表达式
一.re 模块中 1.re.match #从开始位置开始匹配,如果开头没有match()就返回none 语法:re.match(pattern, string, flags=0) pattern 匹配 ...
- Python学习 ——正则表达式
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. re 模块使 Python 语言拥有全部的正则表达式功能. compile 函数根据一个模式字符串和可选的标志参数生 ...
- python学习-正则表达式(十)
1.查看re模块的全部属性和函数 >>>import re,pprint >>>pprint.pprint(re.__all__) ['match', 'fullm ...
- [python 学习]正则表达式
re 模块函数re 模块函数和正则表达式对象的方法match(pattern,string,flags=0) 尝试使用带有可选的标记的正则表达式的模式来匹配字符串.如果匹配成功,就返回匹配对象:如果失 ...
- 四、python学习-正则表达式
正则表达式 import re lst = re.findall(正则表达式,需要匹配的字符串) findall 把所有匹配到的字符串都搜出来,返回列表 不能把分组内容和匹配内容同时显示出来 sear ...
- Python学习笔记——正则表达式入门
# 本文对正则知识不做详细解释,仅作入门级的正则知识目录. 正则表达式的强大早有耳闻,大一时参加一次选拔考试,题目就是用做个HTML解析器,正则的优势表现得淋漓尽致.题外话不多讲,直接上干货: 1. ...
- 学习 正则表达式 js java c# python 通用
正则表达式 js java c# python 学习网站 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Globa ...
- 【Python学习笔记四】获取html内容之后,如何提取信息:使用正则表达式筛选
在能够获取到网页内容之后,发现内容很多,那么下一步要做信息的筛选,就和之前的筛选图片那样 而在python中可以通过正则表达式去筛选自己想要的数据 1.首先分析页面内容信息,确定正则表达式.例如想获取 ...
- [Python学习笔记]正则表达式总结
常用缩写字符及其含义表格查询 缩写字符分类 含义 \d 0-9的任意数字 \D 除0-9的数字以外的任何字符 \w 任何字母.数字或下划线字符(可以认为是匹配"单词"字符) \W ...
随机推荐
- SQL Server ->> Sparse File(稀疏文件)
Sparse File(稀疏文件)不是SQL Server的特性.它属于Windows的NTFS文件系统的一个特性.如果某个大文件中的数据包含着大量“0数据”(这个应该从二进制上看),这样的文件就可以 ...
- 【Leetcode】【Medium】Rotate List
Given a list, rotate the list to the right by k places, where k is non-negative. For example:Given 1 ...
- Asp.net让某一页设置成gb2312或utf-8的方法
有些需求,一定要用到utf-8格式,在web.config里面设置<globalization requestEncoding="utf-8" ...
- Android-删除指定包名的App
/** * check and delete the old package app if it exists. */ private void checkOldPackage() { String ...
- laravel5.5 自定义验证规则——手机验证RULE
相信很多小伙伴和我一样烦恼,laravel没有自带手机号的验证,每次验证手机号都要写正则这类的规则,每次都是repeat yourself!违背了编码的一个原则,就是Don't repeat your ...
- 巧用padding生成正方形DIV
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- JAVA串口开发帮助类分享-及写在马年末
摘要: 在系统集成开发过程中,存在着各式的传输途径,其中串口经常因其安全性高获得了数据安全传输的重用,通过串口传输可以从硬件上保证数据传输的单向性,这是其它介质所不具备的物理条件.下面我就串口java ...
- C 语言实现多态的原理:函数指针
C语言实现多态的原理:函数指针 何为函数指针?答案:C Programming Language. 能够查阅下,从原理上来讲,就是一个内存地址.跳过去运行相应的代码段. 既然如此,在运行时决定跳到哪个 ...
- PHP----练习-----新闻管理----增删改查
练习-----新闻管理 题目要求如下: 做法: [1]建数据库 [2]封装类文件--------DBDA.class.php <?php class DBDA { public $fuwuqi= ...
- Windows 2008 Scheduled tasks result codes
0 or 0x0: The operation completed successfully. 1 or 0x1: Incorrect function called or unknown funct ...