在修饰匹配次数的符号后加一个“?”,则表示匹配尽可能少的字符,这叫正则表达式的非贪婪模式。
字符串 |
正则表达式 |
匹配结果 |
<a>aaa</a><a>aaaa</a> |
<a>(.*?)</a> |
两个<a>aaa</a> |
<a>aaa</a><a>aaaa</a> |
<a>(.*)</a> |
<a>aaa</a><a>aaaa</a> |
看到这个比较就非常清楚了。
测试程序:
public class Test {
public static void main(String args[]){
String input = "<a>aaa</a><a>aaaa</a>";
String regex = "<a>(.*?)</a>"; // 非贪婪模式
// String regex = "<a>(.*)</a>"; // 贪婪模式
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(input);
while(m.find()){
System.out.println(m.group());
}
}
}
参看:http://www.regexlab.com/zh/regref.htm#othercommon第2.1点。
分享到:
相关推荐
本文实例讲述了python 正则表达式贪婪模式与非贪婪模式原理、用法。分享给大家供大家参考,具体如下: 之前未接触过正则表达式,今日看python网络爬虫的源码,里面一行正则表达式匹配的代码初看之下,不是很理解,...
### 正则表达式——递归匹配与非贪婪匹配 #### 一、递归匹配 在正则表达式中,递归匹配是一个重要的概念,它主要用于处理那些具有嵌套结构的数据,例如数学公式中的括号匹配或HTML标签的匹配。 ##### 1.1 嵌套...
1. **语法兼容性**:如描述所述,PCRE库的正则表达式语法与Perl语言高度兼容,这意味着开发者可以利用Perl中广泛使用的正则表达式语法,如贪婪和非贪婪量词、分支选择、反向引用等。 2. **Unicode支持**:PCRE库...
以上给出的正则表达式仅覆盖了一些基础用例,实际的正则表达式可以变得极其复杂,涉及更多的元字符和修饰符,如贪婪与非贪婪匹配、分组、零宽断言等。正则表达式的学习和掌握需要时间和实践,但一旦熟悉,它们将成为...
- 贪婪与非贪婪匹配:默认情况下,`*`, `+`, `?`是贪婪的,会尽可能多地匹配。如果在后面加上`?`,如`.*?`,则变为非贪婪,尽可能少地匹配。 **7. 性能考虑** 虽然正则表达式功能强大,但过度使用或者设计复杂的...
什么是正则表达式的贪婪与非贪婪匹配 ...下面通过实例代码看下正则表达式的贪婪模式与非贪婪模式,具体内容如下所示: 贪婪模式:能匹配的最大部分 s = This is a number 234-235-22-4223 r = re
在这其中,正则表达式的贪婪模式与非贪婪模式是两个关键的概念,它们决定了正则表达式如何处理连续重复的字符或字符集。深入理解这两种模式的差异,对于编写高效且准确的正则表达式至关重要。 首先,让我们探讨贪婪...
正则表达式(Regular Expression,简称regex)是用于在文本中匹配特定模式的强大工具,广泛应用于数据验证、搜索替换和文本处理等领域。正则表达式调试工具是开发人员用来测试和优化这些模式的重要辅助工具。本文将...
- **正则表达式性能优化**:避免过度复杂的正则表达式,合理使用非贪婪匹配,减少回溯。 - **正则表达式调试**:使用`re.DEBUG`标志编译正则表达式,查看其内部结构。 - **正则表达式在其他语言中的差异**:虽然...
同时,确保在编写正则表达式时避免无限循环和贪婪匹配,以免导致程序卡死。 综上所述,易语言正则表达式匹配中文涉及了字符串处理、字符编码、正则表达式语法等多个方面。通过学习和掌握这些知识点,开发者可以有效...
正则表达式(Regular Expression)是一种模式匹配语言,通过特定的语法来描述字符串的模式,用于在文本中寻找符合该模式的字符串。 1. **基本概念与用途** - 正则表达式主要用途包括字符串匹配、查找和替换。 - ...
3. **回溯与贪婪与非贪婪匹配**:了解如何控制匹配的范围,避免回溯带来的性能问题。 4. **模式修饰符**:i忽略大小写,g全局匹配,m多行模式等。 5. **高级技巧**:如环视(lookaround)、条件表达式、嵌入式注释等...
9. 复杂模式:正则表达式支持更复杂的模式,如贪婪与非贪婪量词`*?`、`+?`、`??`、`{n,}?`等,以及字符类、分组、后向引用等高级特性。 学习和熟练掌握C#中的字符串和正则表达式,能够极大地提升你在处理文本数据时...
- 当正则表达式中包含贪婪模式时,可能会导致意外的拆分结果。可以使用非贪婪量词`*?`, `+?`, `??`, `{m,n}?`来避免这个问题。 - 在某些情况下,正则表达式可能过于复杂,导致性能下降,应谨慎设计正则模式。 ...
4. 多种匹配模式:除了基本的全局匹配,工具还可能支持多行匹配、贪婪与非贪婪匹配、以及忽略大小写等模式,以满足不同场景下的需求。 5. 查找与替换:正则表达式不仅用于验证,还能用于查找和替换文本。通过正则...
- 要注意贪婪与非贪婪匹配的区别,如`.*`是贪婪匹配,会尽可能多地匹配,而`.*?`是非贪婪匹配,只匹配尽可能少的字符。 - 在使用正则表达式时,应确保其效率,避免过于复杂的表达式导致性能问题。 通过掌握这些知识...