详解正则表达式的贪婪模式与非贪婪模式

网络编程 2025-03-13 04:13www.168986.cn编程入门

介绍正则表达式之贪婪与非贪婪模式

让我们先从一个简单的例子开始,比如字符串 "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页面的设置方法 下一篇:没有了

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by