正则表达式之match()

正则表达式是处理字符串的强大工具,有自己特定的语法结构,可以实现字符串的检索、替换、匹配验证。

开源中国提供的正则表达式测试工具,输入待匹配的文本,然后选择常用的正则表达式就可以得出相应的匹配结果了。

对于URL来说,可以用下面的正则表达式匹配:[a-zS-z]+://[^\s]*。

用这个正则表达式去匹配一个字符串,如果中国字符串包含类似URL的文本,就会被提取出来。

这个正则表达式看上去是乱糟糟的一团,其实不然。如a-z代表匹配任意小写字母,\s表示匹配任意的空白字符,*就代表匹配前面的字符可以任意多个。

 

 python的re库提供了整个正则表达式的实现。

1.match()

match()方法会尝试从字符串的起始位置匹配正则表达式,如果匹配,就返回匹配成功的结构;如果不匹配,就返回None。示例如下:

import re
content='Hello 1234567 World_This is a Regex Demo'
result=re.match('^Hello\s(\d+)\sWorld',content)
print(result)
print(result.group())
print(result.group(1))
print(result.span())

运行结果如下:

<re.Match object; span=(0, 19), match='Hello 1234567 World'>
Hello 1234567 World
1234567
(0, 19)

group()会输出完整的匹配结果,而group1()会输出第一个被()包围的匹配结果。

1.通用匹配

.*(点星)是一个万能匹配。其中.(点)可以匹配任意字符(除换行符),*代表匹配前面的字符无限次。

import re
content='Hello 1234567 World_This is a Regex Demo'
result=re.match('^Hello.*Demo$',content)
print(result)
print(result.group())
print(result.span())

这里我们将中间部分直接省略,全用.*来代替,最后加一个结尾字符串。运行结果如下:

<re.Match object; span=(0, 40), match='Hello 1234567 World_This is a Regex Demo'>
Hello 1234567 World_This is a Regex Demo
(0, 40)

2.贪婪与非贪婪

import re
content='Hello 1234567 World_This is a Regex Demo'
result=re.match('^He.*(\d+).*Demo$',content)
print(result)
print(result.group(1))

 这里我们依然想获取中间的数字,所以中间依然写的是(\d+)。而数字两侧由于内容比较杂乱,所以想省略来写。运行结果如下:

<re.Match object; span=(0, 40), match='Hello 1234567 World_This is a Regex Demo'>
7

可以发现我们只得到了7这个数字。这里涉及一个贪婪匹配与非贪婪匹配的问题。在贪婪匹配下, .*会匹配尽可能多的字符。正则表达式中.*后面是\d+,也就是至少一个数字,并没有指定具体多少给数字,因此,.*就尽可能匹配多的字符,这里就把123456匹配了,给\d+留下一个可满足条件的数字7。

这时,我们可以使用非贪婪匹配来解决这个问题。它的写法是.*?。

非贪婪匹配就是尽可能匹配少的字符。当.*?匹配到Hello后面的空白字符时,再往后的字符就是数字了,而\d+恰好可以匹配,.*?就不再进行匹配,交给\d+去匹配后面的数字。

但需要注意,如果匹配的结果在字符串尾,.*?就可能匹配不到任何内容了。

import re
content='http://weibo.com/comment/kEraCN'
result1=re.match('http.*?comment/(,*?)',content)
result2=re.match('http.*?comment/(.*)',content)
print('result1',result1.group(1))
print('result2',result2.group(1))

运行结果如下:

result1 
result2 kEraCN

可以观察到,.*?没有匹配到任何结果,而.*则尽量匹配多的内容,成功得到了匹配结果。

3.修饰符

正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。

import re
content='''Hello 1234567 World_This
is a Regex Demo
'''
result=re.match('^He.*?(\d+).*?Demo$',content)
print(result.group(1))

 与上例相仿,我们在字符串中加了换行符,但运行直接报错,我们又调用了group()方法导致AttributeError。

.匹配的是除换行符之外的任意字符每当遇到换行符,.*?就不能匹配了,所以导致匹配失败,这里只需加一个修饰符re.S,即可修正这个错误:result=re.match('^He.*?(\d+).*?Demo$',content,re.S)

4.转义匹配

如果目标字符串里就包含,,就需要用到转义匹配:

import re
content='(百度)www.baidu.com'
result=re.match('\(百度\)www\.baidu\.com',content)
print(result)

当遇到用于正则匹配模式的特殊字符时,在前面加反斜线转义一下即可。例如.就可以用\.来匹配,运行结果如下:

已连接到 pydev 调试器(内部版本号 231.9011.38)<re.Match object; span=(0, 17), match='(百度)www.baidu.com'>

可以看到,这里成功匹配到了原字符串。 

小人物
关注 关注
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
详解正则表达式匹配方法 match()
weixin_34208185的博客
07-27 2099
  在前端开发中,正则表达式是一大利器。所以我们这次就来讨论下match()方法。   match本身是JavaScript语言中字符串对象的一个方法,该方法的签名是   match([string] | [RegExp])   它的参数既可以是一个字符串,也可以是一个正则表达式。该方法绝大多数都是要使用正则表达式的,所以参数为string的情况不在本文讨论范围之内。其实参数即使是一个简单的...
正则表达式match(), search(), finall()的区别
12-21
揭秘match(), search(), finall()的区别,废话不多说,看代码 一、先看后解释 import re str = 'python是世界上最美的语言!我爱你中国!' # match的使用 str_match1 = re.match(r'世界(.*)!', str) print(str_match1) # 结果返回None str_match2 = re.match(r'python(.*)!', str) print(str_match2.span()) # 返回(0, 22) print(str_match2.group()) # 返回 python是世界上最美的语言!我爱
JS中【match】和【matchAll】方法详解以及区别比较
最新发布
2301_79858914的博客
09-05 859
match()用于简单匹配,它在没有g标志时返回第一个匹配及捕获组,而在有g标志时返回所有匹配项,但不包含捕获组。matchAll()提供了更强大的功能,返回一个包含所有匹配和捕获组的迭代器,适用于复杂匹配场景,特别是在处理多个捕获组时表现出色。这两个方法各有优势,大家可以根据具体需求选择合适的方法,可以大大提升正则表达式的匹配效率。
正则表达式match
qq_43656995的博客
10-24 1180
正则表达式match <html> <head> <meta charset="utf-8"> <title>正则表达式match</title> </head> <body> <script type="text/javascript"> var num=/6/; var num1=/6/g; va...
正则表达式match方法应用
iteye_5722的博客
01-29 527
match方法介绍 使用正则表达式模式对字符串执行查找,并将包含查找的结果作为数组返回。 语法: stringObj.match(rgExp) stringObj:必选项。对其进行查找的String对象或字符串文字。 RgExp:必选项。为包含正则表达式模式和可用标志的正则表达式对象。也可以是包含正则表达式模式和可用标志的变量名或字符串文字。 如果match方法没有找到匹配,返回...
js正则中的match()
song854601134的博客
06-02 7008
我们把这个现象理解为,只要使用了全局匹配模式,那么match()将只返回“贪婪”的匹配结果,这里的“贪婪”指的就是只招那个最长的能匹配上的字符串,至于分组项,就忽略了。再强调一次,这个例子的结果是没有使用全局匹配的正则表达式的匹配结果。第4项:length,表示匹配到的结果个数,由于这里不使用全局匹配,只找到首次匹配项就结束了,所以匹配结果只有1个,length也就是1。结果说明了一切,当正则中使用全局匹配符g,即使有分组的存在,在匹配结果中也只有匹配到的最长的,那些分组的子匹配都不见了。
js正则表达式match函数讲解
01-19
功能:使用正则表达式模式对字符串执行查找,并将包含查找的结果作为数组返回 函数格式:stringObj.match(rgExp) stringObj为字符串必选 rgExp为正则表达式必选项 返回值:如果能匹配则返回结果数组,如果不能匹配...
正则表达式工具 Match Tracer
12-09
Match Tracer是一款专为正则表达式设计的高级工具,它提供了强大的可视化环境,极大地简化了正则表达式的编写和调试过程。下面将详细介绍这款工具的主要特点和使用方法。 1. 可视化编写环境: Match Tracer的显著...
只能输入正整数的正则表达式及常用的正则表达式
12-30
<input type='text' id='SYS_PAGE_JumpPage' name='SYS_PAGE_JumpPage' size='3' ...clipboardData.getData('text').match(//D/) style=ime-mode:disabled;> 1.只能输入数字和英文的: <input onkeyup=value=
Python基础入门知识之正则表达式学习 正则表达式30分钟入门教程 共21页.pdf
06-04
正则表达式是编程语言中用于模式匹配的强大工具,尤其在数据处理和文本搜索替换时极为有用。Python作为一门广泛使用的编程语言,内置了强大的正则表达式支持。本教程旨在帮助初学者在30分钟内对Python中的正则表达式...
js字符串和正则表达式中的match、replace、exec等函数详解
weixin_38166931的博客
06-30 153
正则并不是经常使用,而正则和字符串之间的函数关系又错综复杂,谁是谁的函数,又是怎么样的一种结果,往往我们是看一遍忘一遍,对此我是头疼不已,感觉自己是个笨蛋^_^。 为了以后不再查文档,特此把常用的函数和功能,简明扼要的罗列在此,以备日后查看: RegExp对象的函数常用的有2个 1、test函数 用法:RegExpObject.test(string) 返回:如果字符串 str...
正则表达式使用系列(二)match 方法
weixin_44447687的博客
10-19 938
关注RPA请访问网站: www.i-search.com.cn 学Python,用RPA,欢迎下载使用 https://www.i-search.com.cn/?from=csdn match 方法 从字符串的头部戒者指定位置开始查找一次匹配,只要找到了一个匹配的结果就返回 match(string[, pos[, endpos]]) string 是待匹配的字符串 pos 和 endpos 可选参数,指定字符串的起始和终点位置,默认值分别是 0 和 len (字符串长度)。 当匹配成功时,返回一个 Mat
正则表达式_match方法使用
qq_41930096的博客
02-25 3172
match方法    re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match() 就返回 None。语法格式如下: re.match(pattern, string, flags=0)    函数参数说明如下表: match函数参数说明 参数 描述 pattern 匹配的正则表达式 string 要匹配的字符串 flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等。如下列出正则表达式修饰符 - 可选标志 正则表
正则之match方法详解
weixin_42161050的博客
11-24 9849
使用 match一般都要结合RegExp的全局g属性来使用的,这样返回的结果是:匹配到的所有结果的数组; let str1 = "12345678"; let reg1 = /\d{1,3}(\d{3})*/g console.log(str1.match(reg1)) // ["123456", "78"] 如果不结合g使用,则在没有分组的情况下,只会返回一个匹配结果(或者没有匹配结果时返回null); let str0 = "12345678"; let r
C#学习 正则表达式1
qq_35607201的博客
12-01 248
什么是正则表达式? 正则表达式语言是一种专门用于字符串处理的语言。 正则表达式的作用:     1,检索:通过正则表达式,从字符串中获取我们想要的部分     2,匹配:判断给定的字符串是否符合正则表达式的过滤逻辑 你可以认为正则表达式表述了一个字符串的书写规则 判断用户输入的密码是否合法,判断用户输入的邮箱格式是否合法 正则表达式的组成 由普通字符以及特殊字符(成为元字符)组成的文字...
正则表达式——exec和match方法
ynd_sg的博客
02-03 807
exec和match,前者是用于检索符合regexp的字符串,后者是在字符串内检索指定的值,同样返回字符串。 在用法上: match:可match字符串和正则 stringObject.match(searchvalue) stringObject.match(regexp) exec:接受参数为字符串 RegExpObject.exec(string) exec的用法和ma...
web服务器--正则表达式 re.match
sundanping_123的博客
05-29 205
怎么看用户输入的内容是我所需要的规范,比如用户注册----正则表达式 在python中需要正则表达式对字符串进行匹配时,可以使用一个模块,re 检测需要处理的字符串是不是符合我的正则表达式,如果有返回值说明满足,并且会形成一个新的对象。那如果不满足呢? 不满足时没有返回值,那么我怎么样能让 h和H都能符合规范,怎么办? h和H都满足我的正则表达式。 代替一个数字: \d 如果把返回值赋...
如何在match中使用正则表达式
dishuyin5924的博客
04-04 252
这是在实现搜索功能的时候遇到的一个问题,在搜索的场景中,会根据搜索框中输入的内容,匹配出包含搜索内容的部分。简单模拟还原使用场景; 首先定义一个遍历 value 用来接收输入的内容 var value; 再定义一个简单的数组来模拟需要匹配的数据 var list = ["aBcd", "abcd","abcd"]; 那么搜索的功能简化就是,在这个数组中匹配出包含搜索的内容数据,并将其返回...
java 正则表达式match_详解正则表达式匹配方法 match()
06-06
好的,关于 Java 正则表达式match() 方法,我可以简单地给你介绍一下。 在 Java 中,使用正则表达式需要使用 java.util.regex 包,该包中提供了 Pattern 和 Matcher 两个类,其中 Matcher 类中定义了 match() 方法,用于对一个字符串进行正则表达式的匹配。 match() 方法的语法如下: ``` public boolean match​() ``` 该方法可以返回一个 boolean 类型的值,表示该字符串是否与正则表达式匹配。如果匹配成功,则返回 true,否则返回 false。 下面是一个使用 match() 方法进行正则表达式匹配的示例代码: ``` import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexDemo { public static void main(String[] args) { String str = "Hello, world!"; Pattern pattern = Pattern.compile("world"); Matcher matcher = pattern.matcher(str); if (matcher.find()) { System.out.println("匹配成功!"); } else { System.out.println("匹配失败!"); } } } ``` 在上述代码中,我们首先定义了一个字符串 str 和一个正则表达式 pattern,然后使用 Matcher 类的 matcher() 方法将正则表达式与字符串进行匹配,并将匹配结果保存在 matcher 对象中。最后,使用 match() 方法判断是否匹配成功。 希望这个简单的介绍能够帮助你理解 Java 中的正则表达式匹配方法。如果你还有其他问题,可以继续问我哦。
写文章

热门文章

  • python爬虫基础(十)分析Robots协议 2719
  • 正则表达式之match() 2279
  • pyhton爬虫基础(六)urllib中的urlopen 1020
  • pyhton爬虫基础(九)urllib中的解析链接 1010
  • python爬虫基础基础(七)urllib中的Request 954

最新评论

  • 数据分析二

    CSDN-Ada助手: 恭喜你这篇博客进入【CSDN月度精选】榜单,全部的排名请看 https://bbs.csdn.net/topics/617346504。

  • 抓取猫眼电影排行上

    CSDN-Ada助手: 恭喜您撰写了第18篇博客!标题“抓取猫眼电影排行上”非常吸引人。您对猫眼电影排行的抓取确实让读者可以更好地了解电影市场动态。希望您能继续坚持创作,为大家带来更多有趣且有价值的内容。 如果我可以提供一些建议的话,我希望在未来的博客中您能够更深入地探讨一些电影排行背后的原因和趋势,或者分享一些独到的观点和见解。这样的话,读者们将更容易从您的博客中获得启发和思考。不过,无论如何,我相信您一定会在创作的道路上不断进步的。期待您下一篇博客的问世!

  • 抓取猫眼电影排行下

    CSDN-Ada助手: 恭喜您写了第19篇博客!标题“抓取猫眼电影排行下”听起来非常吸引人。您一直坚持创作,真是令人敬佩。我希望您能继续保持这样的创作热情,为我们带来更多精彩的内容。 在下一步的创作中,或许您可以考虑加入一些有关猫眼电影排行榜的分析,或者分享一些您对电影评价的见解。这样的创作建议只是我个人的观点,希望能对您有所帮助。期待看到您未来更多精彩的博客!

  • 数据分析二

    CSDN-Ada助手: 恭喜你这篇博客进入【CSDN每天值得看】榜单,全部的排名请看 https://bbs.csdn.net/topics/617180669。

  • 使用XPath上

    CSDN-Ada助手: 恭喜您写了第20篇博客!标题“使用XPath上”听起来很有趣。您在持续创作方面做得非常出色,能够坚持写下去是一个了不起的成就。在下一步的创作中,或许您可以考虑分享一些XPath的实际应用案例,或者深入探讨XPath在不同领域的应用。希望您能继续保持谦虚的态度,因为您的知识和经验对读者来说是宝贵的财富。期待看到更多精彩的内容!

最新文章

  • 数据预处理
  • 自动求梯度
  • _模型评估
2023年39篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家沅江玻璃钢马雕塑玻璃钢雕塑招聘网黄骅佛像玻璃钢雕塑商场美陈公司哪家好苏州仿铜玻璃钢雕塑北京玻璃钢雕塑厂家电话珠海玻璃钢卡通狮子雕塑哈尔滨清远玻璃钢动物雕塑淄博玻璃钢卡通雕塑厂家直销宿州定制玻璃钢雕塑金华玻璃钢陶瓷雕塑价格弧形玻璃钢花盆价格上海商场主题创意商业美陈思路黑龙江玻璃钢海豚雕塑玻璃钢雕塑模具定做厂家漯河知名校园玻璃钢雕塑生产厂家商场美陈休闲忻州玻璃钢卡通雕塑遵义玻璃钢雕塑定做报价宜兴商场秋季美陈公园主题玻璃钢卡通雕塑厂家茂名玻璃钢动物雕塑供应商家四川抽象玻璃钢雕塑销售厂家商场庆典美陈加工台州玻璃钢人物雕塑定制新民玻璃钢南瓜屋雕塑拉萨玻璃钢彩绘雕塑日照玻璃钢雕塑多少钱晋城校园玻璃钢景观雕塑制作厂家福鼎城市雕塑玻璃钢香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化