Python学习笔记8:标准库之正則表達式
Python拥有强大的标准库。从如今起,開始学习标准库中提供的一些经常使用功能。
首先看正則表達式(regular expression),它的主要功能是从字符串(string)中通过特定的模式(pattern),搜索想要找到的内容。
比如:要从一个字符串中找出全部的数字,我们能够这样做:
import re
str = "int2str"
m = re.search("[0-9]",str)
print(m.group(0))
输出:2
re.search()接收两个參数,第一个正則表達式。是匹配条件。
re.search()假设从第二个參数是目标字符串。
返回一个对象m,通过m.group()查看搜索到的结果;没有找到。则返回None。
经常使用函数:
m = re.search(pattern, string)搜索整个字符串,直到发现符合的子字符串。
m = re.match(pattern, string)从头開始检查字符串是否符合正則表達式。必须从字符串的第一个字符開始就相符。
对于返回的m, 我们使用m.group()来调用结果。
str = re.sub(pattern, replacement, string)在string中利用正则变换pattern进行搜索,对于搜索到的字符串,用还有一字符串replacement替换。
返回替换后的字符串str。
re.split()依据正則表達式切割字符串, 将切割后的全部子字符串放在一个表(list)中返回
re.findall()依据正則表達式搜索字符串。将全部符合的子字符串放在一给表(list)中返回
正則表達式:
1)单个字符:
. 随意一个字符
a|b 字符a或字符b
[afg] a或者f或者g的一个字符
[0-4] 0-4范围内的一个字符
[a-f] a-f范围内的一个字符
[^m] 不是m的一个字符
s 一个空格
S 一个非空格
d [0-9]
D [^0-9]
w [0-9a-zA-Z]
W [^0-9a-zA-Z]
2)反复
紧跟在单个字符之后,表示多个这样类似的字符
* 反复 >=0 次
+ 反复 >=1 次
? 反复 0或者1 次
{m} 反复m次。比方说 a{4}相当于aaaa,再比方说[1-3]{2}相当于[1-3][1-3]
{m, n} 反复m到n次。
比方说a{2, 5}表示a反复2到5次。
小于m次的反复,或者大于n次的反复都不符合条件。
比如:
[0-9]{3,5} 9678
a?b b
a+b aaaaab
3) 位置
^ 字符串的起始位置
$ 字符串的结尾位置
比如:
正则表达 相符的字符串举例
不相符字符串
^ab.*c$ abeec
cabeec
4)返回控制
有可能对搜索的结果进行进一步精简信息。比方以下一个正則表達式:
output_(d{4})
该正則表達式用括号()包围了一个小的正則表達式。d{4}。 这个小的正則表達式被用于从结果中筛选想要的信息(在这里是四位数字)。
这样被括号圈起来的正則表達式的一部分。称为群(group)。
我们能够m.group(number)的方法来查询群。group(0)是整个正则表达的搜索结果,group(1)是第一个群……
import re
m = re.search("output_([0-9]{4})", "output_1986.txt")
print(m.group(0),m.group(1))
输出:
('output_1986', '1986')
我们还能够使用(?P<name>...)为group命名,以便更好地使用m.group查询:
import re
m = re.search("output_(?P<year>[0-9]{4})", "output_1986.txt")
print(m.group("year"))
输出:1986
坚持每天都能学一点新东西。好了。今天就先到这里了。
Python学习笔记8:标准库之正則表達式的更多相关文章
- JAVA学习第六十五课 — 正則表達式
正則表達式:主要应用于操作字符串.通过一些特定的符号来体现 举例: QQ号的校验 6~9位.0不得开头.必须是数字 String类中有matches方法 matches(String regex) 告 ...
- 使用正則表達式的格式化与高亮显示json字符串
使用正則表達式的格式化与高亮显示json字符串 json字符串非常实用,有时候一些后台接口返回的信息是字符串格式的,可读性非常差,这个时候要是有个能够格式化并高亮显示json串的方法那就好多了,以下看 ...
- JavaScript正則表達式知识汇总
Js 正則表達式知识汇总 正則表達式: 1.什么是RegExp?RegExp是正則表達式的缩写.RegExp 对象用于规定在文本中检索的内容. 2.定义RegExp:var +变量名=new RegE ...
- iOS_正則表達式
iOS 正則表達式 正則表達式,又称正规表示法.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE).计算机科学的一个概念. 正則表達式使用单个字符 ...
- 辛星教你高速掌握PHP的正則表達式
首先说一下,这篇文章也是我在看了数个大牛的博客之后总结出来的,因此首先向这些大牛表示崇高的敬意和感谢,因为人数众多.并且来源也是特别分散,就不一一介绍了,见谅. ************跨语言的主题* ...
- 【JavaScript】正則表達式
正則表達式,也不是第一次与它见面了.在我们学习ASP.NET视频的时候,验证控件的那个实例中.就有提到过它. 那个时候.都是在控件的属性中自己设置的,用的原理就是正則表達式,当时得感觉就是方便,强大, ...
- python 学习笔记 10 -- 正則表達式
零.引言 在<Dive into Python>(深入python)中,第七章介绍正則表達式,开篇非常好的引出了正則表達式,以下借用一下:我们都知道python中字符串也有比較简单的方法, ...
- shell脚本学习笔记 (正則表達式)
正則表達式一般有三个部分组成,他们各自是:字符类,数量限定符,位置限定符. 规定一些特殊语法表示字符类.数 量限定符和位置关系,然后用这些特殊语法和普通字符一起表示一个模式,这就是正則表達式(Regu ...
- 鸟书shell 学习笔记(二) shell中正則表達式相关
通配符与正則表達式的差别 通配符是bash原生支持的语法,正則表達式是处理字符串的一种表示方式, 正則表達式须要支持的工具支持才干够 语系设置 : export LANG=C grep alias 设 ...
随机推荐
- python - 读取配置文件
# -*- coding:utf-8 -*- ''' @project: jiaxy @author: Jimmy @file: read_config.py @ide: PyCharm Commun ...
- 【转】C# 中的"yield"使用
C# 中的"yield"使用 yield是C#为了简化遍历操作实现的语法糖,我们知道如果要要某个类型支持遍历就必须要实现系统接口IEnumerable,这个接口后续实现比较繁琐要写 ...
- Android获取当前应用版本号
代码改变世界 获取当前应用的版本号 private String getVersionName() throws Exception { // 获取packagemanager的实例 PackageM ...
- 【Luogu】U16325小奇的花园(树链剖分)
题目链接 学了学动态开点的树链剖分,其实跟动态开点的线段树差不多啦 查询的时候别ssbb地动态开点,如果没这个点果断返回0就行 只要注意花的种类能到intmax就行qwq!!!! #include&l ...
- ACM程序设计选修课——1044: (ds:队列)打印队列(queue模拟)
问题 A: (ds:队列)打印队列 时间限制: 1 Sec 内存限制: 128 MB 提交: 25 解决: 4 [提交][状态][讨论版] 题目描述 网络工程实验室只有一台打印机,它承担了非常繁重 ...
- P2134 百日旅行 (斜率优化,DP)
题目链接 Solution 斜率优化\(DP\). 今天下午才打的第一道题 QwQ... \(90\) 分很简单,一个简单的递推. 令 \(f[i]\) 为最后一天旅游的花费, \(g[i]\) 为最 ...
- Best Coder Lotus and Characters
Lotus and Characters 问题描述 Lotus有nn种字母,给出每种字母的价值以及每种字母的个数限制,她想构造一个任意长度的串. 定义串的价值为:第1位字母的价值*1+第2位字母的 ...
- Crash的数字表格 BZOJ 2154 / jzptab BZOJ 2693
jzptab [问题描述] 求: 多组询问 [输入格式] 一个正整数T表示数据组数 接下来T行 每行两个正整数 表示N.M [输出格式] T行 每行一个整数 表示第i组数据的结果 [样例输入] 1 4 ...
- scroll与按钮的位置
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- PHP读取APK的包信息,包括包名,应用名,权限,LOGO等
[转]PHP读取APK的包信息,包括包名,应用名,权限,LOGO等 声明本文转自: 原文链接:https://www.jb51.net/article/53780.htm: 感谢分享! <?ph ...