`

正则表达式中贪婪与懒惰匹配

 
阅读更多

 

正则表达式中贪婪与懒惰匹配:

例子:

String content = "12345645"; 

String rex_zj = "(^1[\\w|\\W]*5)" ; //匹配所有1开头到5的字符串

因为5前面为* ,则匹配为贪婪匹配,匹配到字符串为最长,所以结果为12345645 

如果想匹配到第一个5结束,则为懒惰匹配 ,需要在5前面的*后添加一个?表示最短匹配

如下:String rex_zj = "(^1[\\w|\\W]*?5)" ; 

 

 

Pattern pattern = Pattern.compile(rex_zj );

Matcher matcher = pattern.matcher(content );

 

分享到:
评论

相关推荐

    正则表达式.rar || 正则表达式.rar

    "(懒惰匹配)和"{n,m}+"(贪婪匹配)控制量词的匹配行为,前者尽可能少匹配,后者尽可能多匹配。 三、正则表达式在编程语言中的应用 1. Python:Python的`re`模块提供了正则表达式支持,包括`match()`、`search()`、`...

    正则表达式(Word)

    贪婪与懒惰是指在正则表达式中使用特殊的符号来指定匹配的模式。例如,* 代表贪婪匹配,? 代表懒惰匹配。 14. 处理选项 处理选项是指在正则表达式中使用特殊的符号来指定匹配的选项。例如,i 代表忽略大小写,m ...

    正则表达式的匹配规则

    六、懒惰匹配与贪婪匹配 1. 贪婪匹配:默认情况下,量词 "+"、"*" 和 "?" 都是贪婪的,会尽可能多地匹配字符。 2. 懒惰匹配:在量词后添加问号 "?" 可以使其变为懒惰匹配,例如"a*?"只匹配尽可能少的'a'。 七、回溯...

    正则表达式.txt,正则表达式.txt

    2. **贪婪与懒惰匹配**:默认情况下,量词如 `*` 和 `+` 是贪婪的,即尽可能多地匹配字符。若需要懒惰匹配,则可以在量词后添加 `?`。 3. **性能问题**:复杂的正则表达式可能导致性能问题,特别是在处理大量文本时...

    正则表达式入门教程(pdf版

    随着学习的深入,会接触到更复杂的概念,如字符类(class)、分枝条件(branch)、分组(group)、后向引用(backreference)、零宽断言(lookaround)以及贪婪与懒惰匹配(greedy and lazy matching)等。...

    常用正则表达式 正则表达式

    `:这些是懒惰量词,只匹配尽可能少的字符,与贪婪量词 (`*`、`+`、`?`、`{n,}`、`{n,m}`) 相反。 7. **零宽断言**: - `(?=pattern)`:正向先行断言,检查当前位置后面是否能匹配 pattern,但不消耗字符。 - `(?...

    正则表达式详解(20分钟看懂正则)

    贪婪与懒惰量词决定了正则表达式如何匹配重复模式。默认情况下,量词是贪婪的,尽可能多地匹配字符,而懒惰量词(如`*?`、`+?`)则尽可能少地匹配。 #### 十二、处理选项 正则表达式引擎通常支持多种选项,如忽略...

    正则表达式简明参考.pdf

    正则表达式是一种用于匹配字符串...以上知识点总结了正则表达式的核心用法,包括元字符、字符转义、字符类、反义、分支、分组、反向引用、零宽断言、贪婪与懒惰以及处理选项等,为熟练使用正则表达式提供了基本的指导。

    精通正则表达式(第3版).pdf

    8. 正则表达式的贪婪与非贪婪模式:在正则表达式中,量词(如*、+、?)默认是贪婪的,它会尽可能多地匹配字符;非贪婪模式(或懒惰模式)则匹配尽可能少的字符,通常通过在量词后面加上一个问号(?)来实现。 9. ...

    史上最好的正则表达式教程.pdf

    10. 贪婪与懒惰:正则表达式的匹配默认是贪婪的,尽可能多地匹配字符;而懒惰匹配则相反,尽可能少地匹配字符。可以通过在重复限定符后添加问号来实现懒惰匹配,如.*?。 11. 处理选项:可以在正则表达式中设置各种...

    regexp正则表达式正则表达式正则表达式

    - **贪婪与懒惰匹配**:控制正则表达式的匹配行为。 - **原子组和递归模式**:解决复杂的嵌套结构匹配问题。 #### 六、学习资源 - **《Mastering Regular Expressions》**:本书由 Jeffrey E.F. Friedl 编写,是...

    Python基础入门知识之正则表达式学习 正则表达式30分钟入门教程 共21页.pdf

    在分组中,`\n`表示对第n个捕获组的引用,用于匹配与之前相同的内容。 十四、零宽断言 零宽断言如`\b`表示单词边界,`\B`表示非单词边界,`(?=...)`和`(?!...)`是前瞻断言,`(?:...)`是无捕获分组。 十五、负向零...

    正则表达式帮助文档(正则表达式)

    - 在正则表达式中,一些特殊字符如`(`、`)`、`.`、`*`等需要使用`\`进行转义,以便进行字面值匹配。 4. **分组与反向引用**: - `(pattern)`用于创建一个捕获组,可以对一组字符进行操作,如重复、或操作等。 - ...

    正则表达式.CHM

    9. 安全匹配与不安全匹配:在某些上下文中,正则表达式可能引发无限循环,如`/(a*)*/`在遇到连续的"a"时,如果不小心可能会无限循环。 10. 转义字符:`\`用于转义特殊字符,如`\.`匹配实际的句点,`\(`匹配实际的左...

    javaScript 正则表达式详解

    search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。 JavaScript 中的正则表达式提供...

    精通正则表达式(第三版).pdf

    默认情况下,量词倾向于尽可能多地匹配(贪婪匹配),但在某些情况下,可能需要使用懒惰匹配(`.*?`)来限制匹配范围。 ### Java中的正则表达式实现 Java提供了强大的正则表达式支持,主要通过`java.util.regex`...

    js正则表达式最长匹配(贪婪匹配)和最短匹配(懒惰匹配)用法分析

    在讨论JavaScript中的正则表达式时,贪婪匹配和懒惰匹配是非常重要的概念。这两种匹配方式决定了正则表达式引擎在匹配时的行为,它们在处理同一正则表达式时可能产生不同的结果。为了更好地理解这两种匹配模式,我们...

    正则表达式帮助文档 一点正则表达式的文档 随便看看

    1. **懒惰匹配**:使用`?`让量词变得非贪婪,如`.*?`会尽可能少地匹配字符。 2. **预查**:用`(?=pattern)`或`(?!pattern)`来匹配前方满足或不满足条件的字符。 3. **正向断言**:`(?=pattern)`匹配之后紧跟特定...

Global site tag (gtag.js) - Google Analytics