【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 ...
随机推荐
- 推荐ssh工具
介绍一些我常用的ssh工具 1.Xshell Xshell应该是一款家喻户晓的ssh连接工具,本人有幸也在很长一段时间都在使用Xshell,但是Xshell他是收费的!而且每次关闭后都会有一个提示 ...
- 一套 .NET开发的邮箱Mail开源库
今天给大家推荐一个基于.Net开发的邮箱开源库. 邮箱在我们日常工作中,可以说是非常常见了.个人邮箱一般都是免费的,但企业邮箱会收费,虽然一般情况下,市面邮箱已经够用了.但有些企业对内容安全要求比较严 ...
- KingbaseES V8R3集群维护案例之---pcp_node_refresh应用
案例说明: 在一次KingbaseES V8R3集群切换分析中,运维人员执行了pcp_node_refresh,导致集群发生了failover的切换.此文档对pcp_node_refresh工具做了应 ...
- MySQL---MGR保姆版
一.环境清理: 三台机器都做: 1.修改主机名 2.修改/etc/hosts文件 3.关闭和禁用防火墙 4.关闭和禁用SELinux 5.生成密钥对 6.传输密钥对 7.验证免密登陆 yum remo ...
- Springboot+thymeleaf结合Vue,通过thymeleaf给vue赋值解决Vue的SEO问题
前言 vue开发的项目有时候会有SEO的需求,由于vue是JavaScript框架,内容都在JavaScript和服务端,所以SEO效果很差.vue的服务端渲染又很难和现在成熟的springboot等 ...
- 【文献阅读】Nonlinear controller design of a ship autopilot
(1)文章工作 The main goal here is to design a proper and efficient controller for a ship autopilot based ...
- DELL服务器升级BIOS,做RAID磁盘阵列
dell服务器BIOS升级.LSI集成整列卡驱动安装 1.下载启动盘rufus,安装linux系统到U盘 1.准备两个U盘,插入启动U盘进入系统,进入centos7选择页面,插入另一个U盘用于安装li ...
- windows下运行.sh文件
1.安装git,配置git环境(D:\Tools\Git\cmd) .cmd命令检查是否安装成功(git --version). 2.打开Git Bash窗口,命令运行.sh文件. 3.运行.sh文件 ...
- 浏览器中通过js获取用户语言环境方法
用户语言环境存在navigator对象中,不同浏览器分别通过如下方法获取用户浏览器语言.操作系统语言. IE6 IE7 IE8 Firefox Chrome Safari Opera naviga ...
- Perl报错you may need to install the Win32::Console module(转)
ActivePerl-5.26.3.XXXX.msi安装后,命令行执行cpan,会出现如下提示而无法继续. Can't locate Win32/Console.pm in @INC (you may ...