`

Java 正则表达式 (3) -- Quantifiers

阅读更多

1、Java 正则表达式中的Quantifiers(量词)使用来指定匹配字符出现的次数的,java api中有三种Quantifiers: greedy, reluctant, and possessive。虽然三种quantifiers的作用很相似(见下表),但是三者还是有区别的。(摘自java.sun.com

Quantifiers Meaning
 Greedy  Reluctant  Possessive
 X?  X??  X?+  X, once or not at all
 X*  X*?  X*+  X, zero or more times
 X+  X+?  X++  X, one or more times
 X{n}  X{n}?  X{n}+  X, exactly n times
 X{n,}  X{n,}?  X{n,}+  X, at least n times
 X{n,m}  X{n,m}?  X{n,m}+  X, at least n but not more than m times


2、几个例子(摘自 java.sun.com
  • greedy quantifiers
    <!---->Enter your regex: a?
    Enter input string to search: 
    I found the text 
    "" starting at index 0 and ending at index 0.

    Enter your regex: a
    *
    Enter input string to search: 
    I found the text 
    "" starting at index 0 and ending at index 0.

    Enter your regex: a
    +
    Enter input string to search: 
    No match found.
  • Zero-Length Matches (1)
    <!---->Enter your regex: a?
    Enter input string to search: a
    I found the text 
    "a" starting at index 0 and ending at index 1.
    I found the text 
    "" starting at index 1 and ending at index 1.

    Enter your regex: a
    *
    Enter input string to search: a
    I found the text 
    "a" starting at index 0 and ending at index 1.
    I found the text 
    "" starting at index 1 and ending at index 1.

    Enter your regex: a
    +
    Enter input string to search: a
    I found the text 
    "a" starting at index 0 and ending at index 1.
  • Zero-Length Matches (2)
    <!---->Enter your regex: a?
    Enter input string to search: aaaaa
    I found the text 
    "a" starting at index 0 and ending at index 1.
    I found the text 
    "a" starting at index 1 and ending at index 2.
    I found the text 
    "a" starting at index 2 and ending at index 3.
    I found the text 
    "a" starting at index 3 and ending at index 4.
    I found the text 
    "a" starting at index 4 and ending at index 5.
    I found the text 
    "" starting at index 5 and ending at index 5.

    Enter your regex: a
    *
    Enter input string to search: aaaaa
    I found the text 
    "aaaaa" starting at index 0 and ending at index 5.
    I found the text 
    "" starting at index 5 and ending at index 5.

    Enter your regex: a
    +
    Enter input string to search: aaaaa
    I found the text 
    "aaaaa" starting at index 0 and ending at index 5.
  • Zero-Length Matches (3)
    <!---->Enter your regex: a?
    Enter input string to search: ababaaaab
    I found the text 
    "a" starting at index 0 and ending at index 1.
    I found the text 
    "" starting at index 1 and ending at index 1.
    I found the text 
    "a" starting at index 2 and ending at index 3.
    I found the text 
    "" starting at index 3 and ending at index 3.
    I found the text 
    "a" starting at index 4 and ending at index 5.
    I found the text 
    "a" starting at index 5 and ending at index 6.
    I found the text 
    "a" starting at index 6 and ending at index 7.
    I found the text 
    "a" starting at index 7 and ending at index 8.
    I found the text 
    "" starting at index 8 and ending at index 8.
    I found the text 
    "" starting at index 9 and ending at index 9.

    Enter your regex: a
    *
    Enter input string to search: ababaaaab
    I found the text 
    "a" starting at index 0 and ending at index 1.
    I found the text 
    "" starting at index 1 and ending at index 1.
    I found the text 
    "a" starting at index 2 and ending at index 3.
    I found the text 
    "" starting at index 3 and ending at index 3.
    I found the text 
    "aaaa" starting at index 4 and ending at index 8.
    I found the text 
    "" starting at index 8 and ending at index 8.
    I found the text 
    "" starting at index 9 and ending at index 9.

    Enter your regex: a
    +
    Enter input string to search: ababaaaab
    I found the text 
    "a" starting at index 0 and ending at index 1.
    I found the text 
    "a" starting at index 2 and ending at index 3.
    I found the text 
    "aaaa" starting at index 4 and ending at index 8.
  • exactly n number of times
    <!---->Enter your regex: a{3}
    Enter input string to search: aa
    No match found.

    Enter your regex: a{
    3}
    Enter input string to search: aaa
    I found the text 
    "aaa" starting at index 0 and ending at index 3.

    Enter your regex: a{
    3}
    Enter input string to search: aaaa
    I found the text 
    "aaa" starting at index 0 and ending at index 3.
  • at least n times
    <!---->Enter your regex: a{3,}
    Enter input string to search: aaaaaaaaa
    I found the text 
    "aaaaaaaaa" starting at index 0 and ending at index 9.
  • an upper limit
    <!---->Enter your regex: a{3,6// find at least 3 (but no more than 6) a's in a row
    Enter input string to search: aaaaaaaaa
    I found the text 
    "aaaaaa" starting at index 0 and ending at index 6.
    I found the text 
    "aaa" starting at index 6 and ending at index 9.
  • Capturing Groups with Quantifiers
    <!---->Enter your regex: (dog){3}
    Enter input string to search: dogdogdogdogdogdog
    I found the text 
    "dogdogdog" starting at index 0 and ending at index 9.
    I found the text 
    "dogdogdog" starting at index 9 and ending at index 18.

    Enter your regex: dog{
    3}
    Enter input string to search: dogdogdogdogdogdog
    No match found.
  • Character Class with Quantifiers
    <!---->Enter your regex: [abc]{3}
    Enter input string to search: abccabaaaccbbbc
    I found the text 
    "abc" starting at index 0 and ending at index 3.
    I found the text 
    "cab" starting at index 3 and ending at index 6.
    I found the text 
    "aaa" starting at index 6 and ending at index 9.
    I found the text 
    "ccb" starting at index 9 and ending at index 12.
    I found the text 
    "bbc" starting at index 12 and ending at index 15.

    Enter your regex: abc{
    3}
    Enter input string to search: abccabaaaccbbbc
    No match found.

分享到:
评论

相关推荐

    java正则表达式.pdf

    ### Java正则表达式详解 #### 一、引言 正则表达式是计算机科学中的一个强大工具,用于处理文本数据。随着Java的发展,自J2SE 1.4版本开始,Java正式引入了对正则表达式的支持,并提供了一系列功能强大的API。本文...

    java 正则表达式

    Java正则表达式是Java编程语言中的一个强大工具,它用于处理字符串,进行模式匹配和字符串查找、替换等操作。正则表达式(Regular Expression)是一种模式,这种模式描述了一组字符串的共同特征,可以用来匹配、提取...

    正则表达式工具 for mac

    "正则表达式工具 for mac" 是一款专为Mac用户设计的高效软件,它允许用户在多种语言环境中如PHP、JavaScript、Python、Golang、Java、Ruby、Perl以及C#中编写和测试正则表达式。 这款工具的特色在于其多语言支持,...

    Regular_Expressions_正则表达式-英文版-带详细目录书签.pdf

    正则表达式广泛应用于各种编程语言和工具,如JavaScript、Python、Perl、Java等,它们在数据验证、文本搜索、替换和提取等方面发挥着重要作用。通过学习正则表达式,开发者可以编写更高效、更灵活的代码来处理文本...

    Java正则表达式的使用

    Java正则表达式是用于处理字符串的强大工具,它允许开发者通过模式匹配来验证、查找、替换或提取文本。正则表达式(Regular Expression)是一种特殊序列的字符,这些字符组合在一起形成模式,可以用来描述一系列的...

    正则表达式检查小工具

    在编程语言中,如Java,正则表达式是通过特定的API来使用的,例如Java的`java.util.regex`包。本工具“正则表达式检查小工具”旨在帮助开发者快速验证自定义的正则表达式是否能够正确匹配目标字符串,从而提高开发...

    深入浅出正则表达式 介绍正则表达式的好东西

    3. **基本的文字符号**:最基本的正则表达式由单个字符组成,例如`a`。这样的表达式将匹配字符串中首次出现的字符"a"。若要匹配特定位置之后的字符,可以通过调整引擎的搜索起点来实现。例如,`cat`将匹配字符串...

    深入浅出正则表达式.doc

    - **其他类型引擎**:如.NET 的正则表达式库、Java 的 JDK 正则表达式包等,虽然与 Perl5 类型相似,但在细节上有所差异。 **引擎的工作机制**: - **文本导向引擎**(DFA,Deterministic Finite Automaton):这类...

    正则表达式教程(pdf)

    - **编程语言**:几乎所有的现代编程语言如Python、Java、C#等都支持正则表达式的使用。 - **命令行工具**:如grep、sed、awk等常用工具都支持通过正则表达式进行文本搜索和替换操作。 #### 二、不同类型的正则...

    正则表达式入门正则表达式 学习参考 推荐

    正则表达式在多种编程语言中都有广泛的应用,比如在JavaScript、Python、Java等语言中都能找到它的身影。 #### 二、正则表达式的基础 ##### 2.1 基本概念 **2.1.1 字符串的组成** 在正则表达式的匹配过程中,...

    浅出之正则表达式

    正则表达式是一种强大的文本处理工具,用于匹配、查找、替换和分析字符串。它是通过一套特定的语法来定义模式的,这些模式可以描述各种复杂的文本结构。正则表达式(Regex)是Regular Expression的简称。 1. 正则...

    正则表达式

    #### 二、Java正则表达式基础知识 **基本概念:** - **Pattern**:表示预编译的正则表达式模式。 - **Matcher**:用于执行查找和替换操作的类。 - **Character Classes**:字符类,如`\d`表示数字字符。 - **...

    正则表达式30分钟入门教程

    在实际应用中,正则表达式通常与编程语言结合使用,如JavaScript、Python、Java等,它们提供了内置的函数或模块来处理正则表达式。学习正则表达式的最佳方式是通过实例,理解每个部分的功能,然后进行修改和实践。 ...

    一个java正则表达式工具类源代码.zip(内含Regexp.java文件)

    * Summary of regular-expression constructs 正则表达式结构简介: * Construct Matches * Characters 字符: * x The character x x 字符 x * \\ The ...

    正则表达式学习

    - Java的`java.util.regex`包提供了`Pattern`和`Matcher`类来处理正则表达式。 - C#中,`System.Text.RegularExpressions`命名空间提供`Regex`类,支持正则表达式操作。 11. **实践与调试**: - 使用在线工具,...

    【第十二章】JavaScript【正则表达式(3)】

    在本章"第十二章:JavaScript 正则表达式(3)"中,我们将深入探讨正则表达式的高级用法和技巧,以提升你的JavaScript开发能力。 正则表达式在JavaScript中的应用广泛,它不仅可以用在`String`对象的方法如`match()`...

Global site tag (gtag.js) - Google Analytics