码迷,mamicode.com
首页 > 其他好文 > 详细

正则表达式

时间:2020-02-07 10:20:35      阅读:59      评论:0      收藏:0      [点我收藏+]

标签:sed   ace   gif   one   换行符   img   ade   表达   onclick   

# 正则表达式:
字符组:[字符组]
在同一个位置可能出现的各种字符组成了一个字符组,在正则表达式中[]表示
[0-9]: 可以匹配0-9这几个数
[a-z]: 可以匹配a-z这26个字母
[A-Za-z1-9]: 匹配字母,数字
元字符:
. 匹配除换行符以外的任意字符
\w 匹配字母,数字,下划线(word)
\s 匹配任意空白符(space)
\d 匹配数字 (digit)
\W 匹配非字母,数字,下划线
\S 匹配任意非空白符
\D 匹配非数字
\n 匹配换行符
^ 匹配字符串的开始 例: ^[a-z] 匹配以字母开头的字符串
$ 匹配字符串的结尾 例: ^[a-z][a-z]$ 匹配以字符串开头,字符串结尾,且中间只有两个字母的字符串
[^a] 除了a之外的都匹配
* 匹配0次或多次 例: \d* 匹配所有数字
+ 匹配一次或多次
? 匹配0次或1次
{n} 重复n次 例:\d{11} 数字重复11次
{n,} 重复n次或多次
{n,m} 重复n次到m次

练习1:匹配身份证号
^[1-9]\d{14}(\d{2}[0-9x])?$
^[1-9]\d{16}[0-9x] | [1-9]\d{14}

import re

# findall 返回所有满足匹配条件的结果, 放在列表里

技术图片
1 ret = re.findall([a-z]+, ava isj ask)
2 print(ret) # [‘ava‘, ‘isj‘, ‘ask‘]
View Code

# search 从前往后找,找到一个就返回,返回的变量需要调用group才能拿到结果。

技术图片
1 ret = re.search(a, bva isj ask)
2 if ret:
3 print(ret.group())   # a
View Code

# match 从头开始匹配,如果正则规则从头开始可以匹配上,就返回一个变量

技术图片
ret = re.match(a, bva isj ask)
if ret:
print(ret.group())
View Code

# split

技术图片
1 ret = re.split([ab], abcd)
2 print(ret)   # 先用a分割得到: [‘‘,‘bcd‘], 在分别对其按b分割得到[‘‘, ‘‘,‘cd‘]
View Code

# sub 将数字替换成‘H‘,参数2表示只替换两个

技术图片
1 ret = re.sub(\d, H, eva13s5, 2)
2 print(ret)    # evaHHs5
View Code

# subn 返回元组(替换的结果,替换了多少次)

技术图片
ret = re.sub(\d, H, eva13s5)
print(ret)   # (evaHHsH, 3)
View Code

# compile 将正则表达式编译成一个正则表达对象,

技术图片
1 obj = re.compile(\d{3}) // 规则匹配的是3个数字
2 ret = obj.search(abc1234ee)
3 print(ret.group())   # 123
View Code

# finditer 返回一个存放匹配结果的迭代器

技术图片
ret = re.finditer(\d, ds3sy4784a)
print(next(ret).group())    #查看第一个结果 3
print([i.group() for i in ret])    # 查看剩余的结果 [‘4‘, ‘7‘, ‘8‘, ‘4‘]
View Code

正则表达式

标签:sed   ace   gif   one   换行符   img   ade   表达   onclick   

原文地址:https://www.cnblogs.com/pythoncui/p/12271909.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!