博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python正则表达式模块re
阅读量:4290 次
发布时间:2019-05-27

本文共 1174 字,大约阅读时间需要 3 分钟。

正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。

应用:搜索引擎的核心原理就是利用正则表达式匹配搜索结果;网页爬虫

‘r’:在以’r’为前缀的字符串字面值中,反斜杠不会以任何特殊的方式处理。所以r"\n"是一个包含’'和’n’两个字符的字符串,而"\n"是包含一个换行符的单字符字符串。

‘.‘ :字符在正则表达式代表着可以代表任何一个字符(包括它本身)

‘+’的作用将前面一个字符或一个子表达式重复一遍或者多遍。

‘. +’ : 将.号重复一遍或者多遍,‘.’号可表示任一字符,因此合起来是代表任意长字符串。

比方说表达式“ab+”那么它能匹配到“abbbbb”,但是不能匹配到"a",它要求你必须得有个b,多了不限,少了不行。你如果问我有没有那种“有没有都行,有多少都行的表达方式”,回答是有的。

‘*’:将前面一个字符或一个子表达式重复0次或多次

比方说我们在王叶内遇到了链接,可能既有http://开头的,又有https://开头的

import rekey = r"http://www.nsfbuhwe.com and https://www.auhfisna.com"#胡编乱造的网址,别在意p1 = r"https*://"#看那个星号!pattern1 = re.compile(p1)print pattern1.findall(key)

[]:代表匹配里面的字符中的任意一个

[^]代表除了内部包含的字符以外都能匹配
“?”将贪婪的“+”改成懒惰的“+”,例如,

import rekey = r"chuxiuhong@hit.edu.cn"p1 = r"@.+\."#我想匹配到@后面一直到“.”之间的,在这里是hitpattern1 = re.compile(p1)print pattern1.findall(key)

输出结果

['@hit.edu.']

呦呵!你咋能多了呢?我理想的结果是@hit.,你咋还给我加量了呢?这是因为正则表达式默认是“贪婪”的,我们之前讲过,“+”代表是字符重复一次或多次。但是我们没有细说这个多次到底是多少次。所以它会尽可能“贪婪”地多给我们匹配字符,在这个例子里也就是匹配到最后一个“.”。

我们怎么解决这种问题呢?只要在“+”后面加一个“?”就好了。

import rekey = r"chuxiuhong@hit.edu.cn"p1 = r"@.+?\."#我想匹配到@后面一直到“.”之间的,在这里是hitpattern1 = re.compile(p1)print pattern1.findall(key)

输出结果

['@hit.']

加了一个“?”我们就将贪婪的“+”改成了懒惰的“+”。

{a,b}(代表a<=匹配次数<=b)

参考资料:

通配符详解:

转载地址:http://izegi.baihongyu.com/

你可能感兴趣的文章
阿里云服务器部署方案(nginx+tomcat+mysql)
查看>>
Java分布式开发不得不知的Dubbo技术详细介绍
查看>>
很多人都没用过的轻量级Oracle数据库数据导出工具——性能超赞
查看>>
大白话讲解并发控制的悲观锁与乐观锁 / 高性能 MySQL 笔记
查看>>
javascript大量推送数据如何快速处理?
查看>>
一个关于 nolock 的故事
查看>>
关于数据库方面的面试技巧:如何从建表展现自己能力
查看>>
直击Redis持久化磁盘IO痛点,让存储不再有负担!
查看>>
CentOS 7.0 x64下Zabbix 3.0 安装笔记 / linux运维之ZABBIX通过自带web检测功能检测网站是否正常
查看>>
什么是搜索引擎分词技术?
查看>>
细说分布式Session管理
查看>>
String字符串
查看>>
java—Tomcat高性能调优方案详解
查看>>
误删mysql库不要紧,binlog数据来帮你,再也不用担心删库要跑路
查看>>
MongoDB数据库管理开源工具Robo 3T
查看>>
记一次地址服务优化(Redis使用优化)
查看>>
Oracle Database 18c 的10大新特性一览
查看>>
volatile变量与普通变量的区别
查看>>
Spring Security 使用总结
查看>>
Mysql Repliaction技术入门
查看>>