详解正则表达式的贪婪模式与非贪婪模式
介绍正则表达式之贪婪与非贪婪模式
让我们先从一个简单的例子开始,比如字符串 "abcaxc",以及模式 "abc"。
什么是正则表达式的贪婪与非贪婪匹配?
在正则表达式的世界里,匹配模式可以有两种截然不同的方式:贪婪模式与非贪婪模式。
贪婪模式,正如其名,会尽可能多地匹配字符。在上述例子中,使用模式 "abc" 匹配字符串 "abcaxc",它会匹配到 "abcaxc"(即整个符合模式的最大部分)。
而非贪婪模式,则尽可能少地匹配字符。同样在上述例子中,使用非贪婪模式匹配,只会匹配到 "abc"。
让我们通过具体的实例代码来进一步理解这两种模式。
实例代码
假设我们有字符串 "This is a number 234-235-22-4223"。
贪婪模式实例:
```python
s = "This is a number 234-235-22-4223"
r = re.match(r"(.+)(\d+-\d+-\d+-\d+)", s)
print(r.groups()) 输出:("This is a number 23", '4-235-22-4223')
```
在这个例子中,贪婪模式中的 “.+” 会尽可能多地匹配字符,直到找到符合模式的第二部分。第一个数字组 "23" 没有被成功提取。
非贪婪模式实例:
```python
s = "This is a number 234-235-22-4223"
r = re.match(r"(.+?)(\d+-\d+-\d+-\d+)", s)
print(r.groups()) 输出:("This is a number ", '234-235-22-4223')
```
在非贪婪模式中,“.+?” 会尽可能少地匹配字符,一旦找到符合模式的部分就会停止。这里成功提取了整个数字组。
这就是正则表达式的贪婪与非贪婪模式的基本概念和用法。希望这些实例和解释能帮助你更好地理解这两种模式,并在实际使用中灵活应用。如果你有任何疑问或需要进一步了解,请随时与我交流。
编程语言
- 详解正则表达式的贪婪模式与非贪婪模式
- ThinkPHP 404页面的设置方法
- 基于layui数据表格以及传数据的方式
- jQuery消息提示框插件Tipso
- 招聘网站基于jQuery实现自动刷新简历
- 微信小程序 条件渲染详解
- PHP框架自动加载类文件原理详解
- 深入浅析Jsp中 out.print 和 out.write 的区别
- vue webpack实用技巧总结
- IE8利用自带的setCapture和releaseCapture解决iframe的拖
- win2003上安装SQL2000时CD-KEY(序列号)无法验证解决方
- asp.net(vb)实现金额转换成大写的函数
- 完美解决webstorm启动索引文件卡死的问题
- mysql7.x单独安装mysql的方法
- ASP常用函数-Delay()
- jQuery简单实现QQ空间点赞已经取消点赞