【BOOK】正则表达式
正则表达式
1、 开源中国—正则表达式测试工具:https://tool.oschina.net/regex/
2、 匹配规则

3、 match()
从字符串起始位置匹配正则表达式
若从起始位置匹配不到则返回None
※目标匹配:在正则表达式中加(),就可以根据括号位置获得匹配到的部分内容
※通用匹配
. 匹配初换行符以外的所有字符
* 匹配前面字符的无限次
.* 匹配任意字符
import re content = 'Hello 123 4567 World_lalalalalalal ooo gugu'
# ^Hello:以Hello开头; \s:空格; \d:数字;\w{5}:5个字符或下划线
result = re.match('^Hello\s(\d\d\d)\s\d{4}\s(\w{5})', content)
print(result)
#<re.Match object; span=(0, 20), match='Hello 123 4567 World'>
print(result.group())
# Hello 123 4567 World,匹配结果
print(result.span())
#(0, 20),匹配的范围 ## 匹配目标
print(result.group(1)) #123,正则表达式中被括号起来的第1部分
print(result.group(2)) #World,正则表达式中被括号起来的第2部分 ## 通用匹配
# .匹配初换行符以外的所有字符
# *匹配前面字符的无限次
# .*匹配任意字符
re1 = re.match('^Hello.*gugu$', content) ##匹配到整个字符
print(re1.group())
※贪婪和非贪婪
.* 贪婪匹配,匹配尽可能多的字符
.*? 非贪婪匹配,匹配尽可能少的字符
尽可能使用非贪婪匹配,避免出现匹配缺失的情况
.*? 用在字符结尾可能匹配不到任何内容
import re content = 'Hello 1234567 World_lalalalalalal ooo gugu'
result = re.match('^He.*(\d+).*gu$', content)
print(result.group(1)) #7
## 贪婪匹配初最后一个数字 7 以外,其余全部匹配到 .* 里面了 result1 = re.match('^He.*?(\d+).*gugu$', content)
print(result1.group(1)) #1234567
※修饰符

※转义匹配
字符串组包含了 . * ^等特殊字符需要匹配时,在这些特殊字符前面加 \
import re content = '(百度)www.baidu.com'
result = re.match('\(百度\)\w{3}\.\w{5}\..*', content)
print(result.group()) ## 匹配 . () 时前面要加 \
4、 search()
匹配时扫描整个字符串,返回第一个成功匹配的结果
import re
content = 'Kollo 1234 mm lasokumawali 3434 yaya'
re1 = re.search('mm.*?ya', content)
print(re1.group())
5、 findall()
匹配时扫描整个字符串,返回所有成功匹配的结果
返回列表类型,for in循环遍历
6、 sub()
去掉一些无关内容,简化findall()的正则表达式
import re content = 'be485a563u85ti544ful45545'
result = re.sub('\d+', '', content)
print(result) #beautiful ,去掉字符中的所有数字
7、 compile()
将正则表达式字符串编译成正则表达式对象,可以在后续匹配中进行复用
import re con1 = '2019-12-06 12:12'
con2 = '2020-11-12 03:12'
con3 = '2022-03-22 19:45'
pattern = re.compile('\d{2}:\d{2}') ## 编译 正则表达式对象
#去掉时间,保留日期
res1 = re.sub(pattern, '', con1)
res2 = re.sub(pattern, '', con2)
res3 = re.sub(pattern, '', con3)
print(res1, res2, res3)
# 2019-12-06 2020-11-12 2022-03-22
【BOOK】正则表达式的更多相关文章
- JS正则表达式常用总结
正则表达式的创建 JS正则表达式的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 var regObj = new RegExp("(^\\s+) ...
- Python高手之路【五】python基础之正则表达式
下图列出了Python支持的正则表达式元字符和语法: 字符点:匹配任意一个字符 import re st = 'python' result = re.findall('p.t',st) print( ...
- C# 正则表达式大全
文章导读 正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串.正则表达式无疑是处理文本最有力的工具,而.NET提供的Regex类实现了验证正则表达式的方法.Regex 类表示不可变(只读)的 ...
- C#基础篇 - 正则表达式入门
1.基本概念 正则表达式(Regular Expression)就是用事先定义好的一些特定字符(元字符)或普通字符.及这些字符的组合,组成一个“规则字符串”,这个“规则字符串”用来判断我们给定的字符串 ...
- JavaScript正则表达式,你真的知道?
一.前言 粗浅的编写正则表达式,是造成性能瓶颈的主要原因.如下: var reg1 = /(A+A+)+B/; var reg2 = /AA+B/; 上述两个正则表达式,匹配效果是一样的,但是,效率就 ...
- Python 正则表达式入门(中级篇)
Python 正则表达式入门(中级篇) 初级篇链接:http://www.cnblogs.com/chuxiuhong/p/5885073.html 上一篇我们说在这一篇里,我们会介绍子表达式,向前向 ...
- 【JS基础】正则表达式
正则表达式的() [] {}有不同的意思. () 是为了提取匹配的字符串.表达式中有几个()就有几个相应的匹配字符串. (\s*)表示连续空格的字符串. []是定义匹配的字符范围.比如 [a-zA-Z ...
- JavaScript 正则表达式语法
定义 JavaScript定义正则表达式有两种方法. 1.RegExp构造函数 var pattern = new RegExp("[bc]at","i"); ...
- [jquery]jquery正则表达式验证(手机号、身份证号、中文名称)
数字判断方法:isNaN()函数 test()方法 判断字符串中是否匹配到正则表达式内容,返回的是boolean值 ( true / false ) // 验证中文名称 function isChin ...
- JS中给正则表达式加变量
前不久同事询问我js里面怎么给正则中添加变量的问题,遂写篇博客记录下. 一.字面量 其实当我们定义一个字符串,一个数组,一个对象等等的时候,我们习惯用字面量来定义,例如: var s = &quo ...
随机推荐
- 一种改进后的turf.idw算法
turf 是Advanced geospatial analysis geojson data in javascript. 官网:http://turfjs.org/ 针对github 中的源码. ...
- [2015年NOIP提高组] 跳石头
一年一度的"跳石头"比赛又要开始了! 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之间,有 <spa ...
- NextCloud 17.0.1 升级到NextCloud 23.0.0
NextCloud 版本过低使用时间过长,想升级一下. 问题记录及参考文档 本次采用离线升级(在线不能下载) 官网下载https://nextcloud.com/install/# 23.0.0最新 ...
- 高斯判别分析GDA推导与代码实现
高斯判别分析GDA推导与代码实现 生成学习 处理分类问题,我们可以使用逻辑回归.Softmax.这两种方法都属于"判别学习",也就是给定 \((x^{(i)}, y^{(i)})\ ...
- UPPER VSCODE
- 创建一个httpserver、httpclient
最近因为要和java进行通信.约定好使用http协议进行消息传递.在网上找了很久server编写发现有个博主写的很详细,因此把东西记录下来以便下次使用.这是原博主网址:https://blog.csd ...
- Ubuntu超方便安装显卡驱动的秘籍!不用命令行!!
搭集群最烦的就是,显卡驱动和CUDA的问题,此前我都是命令行装的,直到,凯东哥教了我一个非常方便.傻瓜的方法,我以后再用命令行装我就是狗!! 非常的简单!在Setting里找到software &am ...
- SQL server数据库 账户SA登录失败,提示错误:18456
在我们使用数据库的时候,偶尔会遇到一些登录上的错误提示.比如,在数据库配置上没有正确开启用户的登录策略以及服务器身份验证模式时,就会提示"用户'sa'登录失败.(Microsoft SQL ...
- JSON操作方法
一 JSON.stringify JSON.stringify() 方法是将一个JavaScript值(对象或者数组)转换为一个 JSON字符串,如果指定了replacer是一个函数,则可以替换值,或 ...
- 微信退费报错:SSLHandshakeException No appropriate protocol (protocol is disabled or cipher suites are inappropr)
微信退费报错:No appropriate protocol (protocol is disabled or cipher suites are inappropr) javax.net.ssl.S ...