浅谈正则表达式一

‘‘‘
正则表达式作用:判断一个字符串是否匹配给定的格式:例如判断用户注册账号是否满足格式,抓取页面链接等。

‘‘‘
import re #使用正则表达式需要导入re模块
st = "[email protected]"
st1 = re.findall(r‘^[a-zA-Z0-9][email protected][a-zA-Z0-9]+\.com$‘,st) #前面为匹配的规则,后面为原始字符串
print(st1)
#findall方法:在字符串中找到正则表达式所匹配的所有字符串,以列表形式返回,如果没有找到,返回空列表。
st2 = "小姐姐正在吃东西,小姐姐样子好可爱。"
st3 = re.findall("小姐姐",st2)
print(st3)

#match方法:从字符串起始位置匹配,匹配成功,返回一个匹配对象(对象中包含了匹配到的信息),匹配不成功,match()返回为空
st4 = re.match("小姐姐",st2)#注意match方法只能匹配一个
print(st4) #<re.Match object; span=(0, 3), match=‘小姐姐‘>

#search方法:扫描整个字符串,匹配成功,返回一个匹配对象,只能匹配一个。
st5 = re.search("小姐姐",st2)
print(st5)

#sub替换方法:
st6 = re.sub("小姐姐","狗狗",st2)
print(st6) #狗狗正在吃东西,狗狗样子好可爱。

#-----------------------元字符------------------------------------
‘‘‘
什么是元字符:本身具有特殊含义的字符。
常用元字符:
.:指通配符,代表任意一个字符
[]:通常用来匹配一个字符集,匹配[]中列举的字符.
^:匹配以什么开始的字符串
$:匹配以什么结尾的字符串
*:匹配一个字符出现0次或者无限次
+:匹配前一个字符出现1次或者无限次
?:匹配前一个字符出现0次或者1次,即要么有1次,要么没有
{m}:匹配前一个字符出现m次
{m,n}:匹配前一个字符出现m到n次
\:反斜杠后边跟元字符去除特殊功能
反斜杠后边跟普通字符实现特殊功能
\d:匹配任何十进制数,相当于类[0-9]
re.findall("\d","ww3361gg")也可以写为re.findall("[\d]","ww3361gg")
结果为:[‘3‘,‘3‘,‘6‘,‘1‘]
\D:匹配任何非数字字符,相当于类[^0-9]
\w:匹配任何字母数字字符相当于[a-zA-Z0-9]
re.findall("\w","wwww.5362.ew")
结果为:[‘w‘,‘w‘,‘w‘,‘w‘,‘5‘,‘3‘,‘6‘,‘2‘,‘e‘,‘w‘]
\W:匹配任何非字母数字字符相当于[^a-zA-Z0-9]
\b:匹配任何一个单词边界
\B:匹配非单词边界
(ab):将括号中字符作为一个分组
...
‘‘‘
# -----------------元字符.的使用-------------------------------
st1 = "丽萨在吃汉堡"
s = re.findall(r‘丽萨.‘,st1)
print(s) #[‘丽萨在‘]

#----------------元字符[]的使用---------------------------------
st2 = "I love you"
s = re.findall(r"[love]",st2)
print(s)  #[‘l‘, ‘o‘, ‘v‘, ‘e‘, ‘o‘]

st3 = "露西 is eating apple"
s = re.findall(r"[a-z]",st3)
print(s)#[‘i‘, ‘s‘, ‘e‘, ‘a‘, ‘t‘, ‘i‘, ‘n‘, ‘g‘, ‘a‘, ‘p‘, ‘p‘, ‘l‘, ‘e‘]

# ------------------------元字符*的使用-------------------------
st = "ac"
st1 = re.findall(r"ab*c",st)
print(st1) #[‘ac‘] 0次也可以匹配到

st = "abbbbc"
st1 = re.findall(r"ab*c",st)
print(st1) #[‘abbbbc‘]

#-------------------------元字符+的使用-------------------------
st = "ac"
st1 = re.findall(r"ab+c",st)
print(st1) #[] 0次匹配不到

st = "abbbbc"
st1 = re.findall(r"ab+c",st)
print(st1) #[‘abbbbc‘]

# -------------------元字符?的使用-----------------------------
st = "abbbbc"
st1 = re.findall(r"ab?c",st)
print(st1) #[]

#--------------------元字符{m}的使用---------------------------
st = "abbbbc"
st1 = re.findall(r"ab{3}c",st)
print(st1) #[]

st = "abbbbc"
st1 = re.findall(r"ab{4}c",st)
print(st1) #[‘abbbbc‘]

#------------------元字符{m,n}的使用---------------------------
st = "abbbbc"
st1 = re.findall(r"ab{1,4}c",st)
print(st1) #[‘abbbbc‘]

st = "abbbbc"
st1 = re.findall(r"ab{1,5}c",st)
print(st1) #[‘abbbbc‘]

st = "abbbbc"
st1 = re.findall(r"ab{,6}c",st)
print(st1) #[‘abbbbc‘]

st = "abbbbc"
st1 = re.findall(r"ab{4,}c",st) #最少四次到无限次
print(st1) #[‘abbbbc‘]

#----------------元字符^的使用--------------------
st = "abbc abbdr abbea"
st1 = re.findall(r"^abb",st)
print(st1)#[‘abb‘]

#-----------------元字符$的使用--------------------
st = "abbc abbdr abbea"
st1 = re.findall(r"ea$",st)
print(st1)#[‘ea‘]

#---------------元字符\b的使用--------------------
st = "abbc abbdr abbea"
st1 = re.findall(r"\babb",st)
print(st1)#[‘abb‘, ‘abb‘, ‘abb‘]

#----------------元字符\B的使用-------------------
st = "abbc abbdr abbea"
st1 = re.findall(r"\Bbb",st)
print(st1)#[‘bb‘, ‘bb‘, ‘bb‘]

#----------------元字符\的用法-------------------
st = "小姐姐正在吃东西,小姐姐好可爱,小姐姐吃饱了"
st1 = re.findall(r"小姐姐\?",st) #之前?代表匹配前一个字符出现0次或者1次,即要么有1次,要么没有,加了r防转义。
print(st1) #会把满足要求的都获取到[‘小姐姐‘, ‘小姐姐‘, ‘小姐姐‘]

#--------------------贪婪与非贪婪匹配-------------
st = "aaabbbbaaaabbbaaaaaabbb"
st1 = re.findall(r"a{2,4}",st) #正常模式-贪婪匹配
print(st1) #[‘aaa‘, ‘aaaa‘, ‘aaaa‘, ‘aa‘]

st = "aaabbbbaaaabbbaaaaaabbb"
st1 = re.findall(r"a{2,4}?",st) #非贪婪匹配,匹配最短的aa。
print(st1) #[‘aa‘, ‘aa‘, ‘aa‘, ‘aa‘, ‘aa‘, ‘aa‘]

原文地址:https://www.cnblogs.com/jb9527/p/10665568.html

时间: 2024-10-29 01:11:42

浅谈正则表达式一的相关文章

浅谈正则表达式中的分组和引用

问题 我的答案 说明 由正则表达式如何匹配相同字符出发,讲讲正则表达式中的选择.分组和引用. 问题 在外刊君读者群中看到有人提出这样的一个需求: 把字符串切成连续相同字符的正则怎么写?比如abbcccdddd切成a,bb,ccc,dddd 之前我对正则表达式也是略有研究,想尝试一下.其实我对正则表达式的学习基本完全来源于犀牛书的第10章,真正看懂这一章,我觉得操作正则表达式应该不在话下. 我的答案 先给出我的答案吧: 'abbccddd'.match(/(w)1*/g) // ["a"

浅谈正则表达式

释义: 正则表达式,又称规则表达式.(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表通常被用来检索.替换那些符合某个模式(规则)的文本. 概念: 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑. 给定一个正则表达式和另一个字符串,我们可以达到如下的目的: 1. 给定的字符串

浅谈正则表达式-PHP为例

第一次比较系统的学习正则表达式,本篇文章以PHP语言为例来学习. 基本概念 正则表达式=普通字符(如a-z)+分隔符(正斜线(/).hash符号(#) 以及取反符号(~))+特殊字符(称为元字符) 两者的组合: 匹配原理 简单描述下,通常是由字符串位置0开始尝试匹配,若匹配成功存储这个子串:若在某一个位置匹配失败则后移一个位置,从位置1开始重新匹配.直到匹配成功或者匹配到最后一个位置都没有找到成功的子串. 匹配模式 看名字,是不是想到了设计模式中的单例模式了呢? 贪婪模式 在可匹配与可不匹配的时

浅谈 正则表达式

1.正则表达式到底是什么东西? 在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要.正则表达式就是用于描述这些规则的工具.换句话说,正则表达式就是记录文本规则的代码. 很可能你使用过Windows/Dos下用于文件查找的通配符(wildcard),也就是*和?.如果你想查找某个目录下的所有的Word文档的话,你会搜索*.doc.在这里,*会被解释成任意的字符串.和通配符类似,正则表达式也是用来进行文本匹配的工具,只不过比起通配符,它能更精确地描述你的需求——当然,代价就是

python浅谈正则的常用方法

python浅谈正则的常用方法覆盖范围70%以上 上一次很多朋友写文字屏蔽说到要用正则表达,其实不是我不想用(我正则用得不是很多,看过我之前爬虫的都知道,我直接用BeautifulSoup的网页标签去找内容,因为容易理解也方便,),而是正则用好用精通的很难(看过正则表的应该都知道,里面符号对应的方法规则有很多,很灵活),对于接触编程不久的朋友们来说很可能在编程的过程上浪费很多时间,今天我把经常会用到正则简单介绍下,如果不是很特殊基本都覆盖使用. 1.正则的简单介绍 首先你得导入正则方法 impo

浅谈图片服务器的架构演进

浅谈图片服务器的架构演进 现在几乎任何一个网站.Web App以及移动APP等应用都需要有图片展示的功能,对于图片功能从下至上都是很重要的.必须要具有前瞻性的规划好图片服务器,图片的上传和下载速度至关重要,当然这并不是说一上来就搞很NB的架构,至少具备一定扩展性和稳定性.虽然各种架构设计都有,在这里我只是谈谈我的一些个人想法. 对于图片服务器来说IO无疑是消耗资源最为严重的,对于web应用来说需要将图片服务器做一定的分离,否则很可能因为图片服务器的IO负载导致应用 崩溃.因此尤其对于大型网站和应

浅谈 编译器 &amp; 自然语言处理

============================================== copyright: KIRA-lzn ============================================== 转载请注明出处,这篇是我原创,翻版必究!!!!!!!!!!!!!!!!!!! ============================================== 如果觉得写个好,请留个言,点个赞. 自我介绍:本人13届 USTC 研一学生,菜鸟一枚,目前在int

蚂蚁变大象:浅谈常规网站是如何从小变大的(二)(转)

原文:http://blog.sina.com.cn/s/blog_6203dcd60100xokd.html          [第四阶段 : 第一次服务多机化] 当IO性能得到解决以后,我们可能就会面临CPU瓶颈,即程序处理不过来了.那这个时候,最好的方式,就是优化程序.从整体架构和具体业务逻辑上去分析并做优化(可以借助一些性能分析工具,如gprof,xprof等).根据之前的经验,反射.正则表达式.字符串拼接.内存拷贝等是吃CPU的大户,所以优化上可以重点考虑.通过性能优化,一般可以将性能

JavaScript中toStirng()与Object.prototype.toString.call()方法浅谈

toStirng()与Object.prototype.toString.call()方法浅谈 一.toString()是一个怎样的方法?它是能将某一个值转化为字符串的方法.然而它是如何将一个值从一种类型转化为字符串类型的呢? 通过下面几个例子,我们便能获得答案: 1.将boolean类型的值转化为string类型: console.log(true.toString());//"true" console.log(false.toString());//"false&quo