`

java正则表达式用法举例

    博客分类:
  • Java
阅读更多
java正则表达式真难用啊, 这里整理一个java正则表达式用法举例, 比较全, lookingAt()方法比较变态, 备忘
public class PatternTest {
    public static void main(String[] args) {
        /*
         * 常用的调用
         */
        Pattern p1 = Pattern.compile("a*b");
        String str1 = "aaaab";
        Matcher m1 = p1.matcher(str1);
        boolean b1 = m1.matches();
        System.out.println(b1);

        String str2 = "b";
        Matcher m2 = p1.matcher(str2);
        boolean b2 = m2.matches();
        System.out.println(b2);
        /*
         * 另一种调用
         * 等效于上面的语句,尽管对于重复的匹配而言它效率不高,因为它不允许重用已编译的模式。
         * 但它可供多个并发线程安全使用,而上面的调用则就不是安全的.
         */
        boolean b3 = Pattern.matches("a*b", "aaab");
        System.out.println(b3);

        // Pattern类的pattern方法:从pattern类的实例中返回匹配模式的字符串表示
        String pattern1 = p1.pattern();
        System.out.println(pattern1);

        // Pattern类的split方法
        String[] arr1 = p1.split("rrrrraaabccccaaaaab");
        for (String string : arr1) {
            System.out.println(string + ">>>>");
        }
        /*
         * Matcher类
         * matches方法: 方法尝试将整个输入序列与该模式匹配
         * lookingAt方法: 尝试将输入序列从头开始与该模式匹配,与 matches 方法类似,
         * 此方法始终从区域的开头开始;与之不同的是,它不需要匹配整个区域。
         * find方法: 方法扫描输入序列以查找与该模式匹配的下一个子序列
         */
        String str3 = "aabbcccaaaaaeeeaaaaaaaaagggga";
        Pattern p3 = Pattern.compile("a+");
        Matcher m3 = p3.matcher(str3);
        boolean bo4 = m3.matches();
        System.out.println("matches方法:  " + bo4);
        /*
         * lookingAt方法,从开头第一个字符进行匹配,匹配成功了不再继续匹配,
         * 从第一个字符开始,匹配失败了,也不继续匹配.不需要匹配整个序列
         */
        boolean bo5 = m3.lookingAt();
        if (bo5) {
            // group方法(不带参数)返回的就是匹配的子字符串.
            System.out.println("lookingAt方法:  " + m3.group());
        }

        Pattern p4 = Pattern.compile("b+");
        Matcher m4 = p4.matcher(str3);
        boolean bo6 = m4.lookingAt();
        if (bo6) {
            // group方法(不带参数)返回的就是匹配的子字符串.
            System.out.println("lookingAt方法:  " + m3.group());
        }

        // find方法:找到一个匹配的子串,还会继续找下一个子串.
        while (m3.find()) {
            System.out.println("find方法:  " + m3.group());
        }
        /*
         * 带参数的group方法与不带参数的group方法区别
         * 不带参数的group方法:find方法与lookingAt方法匹配出来的子序列(上面有演示)
         * 带参数的group方法: 返回在以前匹配操作期间由给定组捕获的输入子序列。
         */
        String str6 = "aaabbbccc";
        Pattern p5 = Pattern.compile("(a+)(b+)(c+)");
        Matcher m5 = p5.matcher(str6);
        boolean boo = m5.matches();
        if (boo) {
            int k = m5.groupCount() + 1;// 加1就是把0下标的整个字符序列加上,它也作为一组放在0下标的位置.
            if (k > 0) {
                for (int i = 0; i < k; i++) {
                    System.out.println(m5.group(i));
                }
            }
        }
    }
}


分享到:
评论
4 楼 2047699523 2015-04-19  
java正则表达式相关demo源代码下载:http://www.zuidaima.com/share/k%E6%AD%A3%E5%88%99-p1-s1.htm
3 楼 RednaxelaFX 2009-12-08  
night_stalker 写道
怎么用? 我实现了一个 gsub 但是觉得效率可能有点问题
http://scalagroup.group.iteye.com/group/topic/16496

http://www.iteye.com/problems/29463 << 这样……这API看起来也不咋 =_=
2 楼 night_stalker 2009-12-08  
RednaxelaFX 写道
……话说还有一种可以用正则的地方是在一个字符串里有多处满足某模式的子串,我们希望对这些字串做替换,但每个字串替换的内容未必相同(例如可能加上自增量的编号之类)……


怎么用? 我实现了一个 gsub 但是觉得效率可能有点问题
http://scalagroup.group.iteye.com/group/topic/16496
1 楼 RednaxelaFX 2009-12-08  
啊……话说还有一种可以用正则的地方是在一个字符串里有多处满足某模式的子串,我们希望对这些字串做替换,但每个字串替换的内容未必相同(例如可能加上自增量的编号之类),Java的正则API也支持该功能,但用起来也是很不爽……

Matcher.appendReplacement()和Matcher.appendTail()就行,问题是它接收的参数是StringBuffer,想换用StringBuilder都不行

相关推荐

    JAVA正则表达式 从入门到进阶

    Java正则表达式是编程语言Java中用于处理文本的强大工具,它源于早期的神经网络理论研究,由数学家Stephen Kleene提出并应用在Ken Thompson的计算搜索算法中,尤其是在Unix的qed编辑器中得到实际应用。自那时起,...

    Java正则表达式的使用实例

    Java正则表达式是Java编程语言中用于处理字符串的强大工具,它允许程序员通过模式匹配来查找、替换或分割文本。在Java中,正则表达式是通过`java.util.regex`包中的类和接口实现的。本实例将深入探讨如何在Java中...

    常用正则表达式举例说明

    在提供的文件中,如"正则表达式的使用方法.mht"、"正则.txt"等,可能会详细介绍更多的正则表达式用法、特殊字符和预定义字符类,以及如何在实际项目中应用它们。这些资源对于深入理解和掌握正则表达式非常有帮助,...

    正则表达式以及相关的用法举例说明

    以上正则表达式不仅适用于C#,也广泛应用于其他编程语言中,例如Java、Python等。通过这些示例,我们可以看到正则表达式的强大功能和灵活性,它可以帮助开发者高效地完成各种字符串匹配任务。希望这些示例能为你提供...

    Java正则表达式详解

    Java正则表达式是Java语言中用于处理文本和匹配模式的重要工具。正则表达式,又称正规表示式或正规表达项,是一种模式匹配语言,它由一系列字符构成,用于定义要在文本中查找的模式。Java虽然在早期版本中没有内置...

    Java正则表达式详解.doc

    Java正则表达式是用于处理文本和匹配模式的强大工具,尤其在编程中,它能帮助开发者高效地查找、替换和解析字符串。虽然Java在标准库中内置了对正则表达式的支持,但在早期版本中可能需要依赖第三方库,如Apache的...

    精通正则表达式~~~

    使用正则表达式匹配文本... 38 向更实用的程序前进... 40 成功匹配的副作用... 40 错综复杂的正则表达式... 43 暂停片刻... 49 使用正则表达式修改文本... 50 例子:公函生成程序... 50 举例:修整股票价格....

    正则表达式(Java)

    在Java中,我们可以使用`java.util.regex`包中的类,如`Pattern`和`Matcher`来处理正则表达式。例如,使用`matches()`方法可以判断一个字符串是否匹配某个正则表达式。 3. **正则表达式语法**: - **字面值字符**...

    通过Java正则表达式去掉SQL代码中回车换行和多余空格

    在编写代码工具或进行代码清理时,处理SQL语句的格式化问题是一个常见的需求。...通过上述的知识点,我们可以更加深入地理解和掌握如何使用Java正则表达式来处理SQL语句的格式化问题,从而提升代码质量与维护效率。

    简单入门正则表达式(侧重原理,附属实例)

    最后,本章将专注于Java和.NET平台下正则表达式的使用,包括API调用、编译正则表达式、执行匹配和替换操作等,并可能包含一些平台特有功能的介绍。 通过这个压缩包的学习,你将能够掌握正则表达式的基本概念和常用...

    正则表达式学习资料整理

    学习过程中,理解引擎的工作原理、熟悉各种元字符和量词的用法,以及如何构建和调试正则表达式,都是至关重要的。 总的来说,正则表达式是一门强大的技术,学习并熟练掌握它将极大地提升你在处理文本数据时的效率和...

    Java 正则表达式详细使用

    Java正则表达式是一种文本模式,它包含普通字符(如a到z之间的字母)和特殊字符(称为"元字符")。...对于需要进行文本分析、数据验证和字符串处理的Java开发者而言,掌握Java正则表达式的使用方法是非常重要的。

    运用正则表达式匹配所有表名

    这种方法特别适用于使用支持正则表达式匹配的编程语言。 扩展正则表达式的匹配模式,例如使用贪婪模式,可以进一步提高其灵活性。贪婪模式意味着正则表达式引擎会尽可能多地匹配字符。例如,如果使用贪婪模式的`.*`...

    Oracle数据库正则表达式使用场景代码实例

    例如判断一个手机号码输入是否正确,如果使用Java、C或者其他语言进行字符串进行判断,也许写几十行代码都不一定能解决,而且漏洞百出,而使用正则表达式,一行代码则可轻易解决,下面是举例说明正则表达式的用法: ...

    正则表达式

    1. `java.lang.String`:提供了`matches()`、`replaceFirst()`和`replaceAll()`等方法,直接支持正则表达式操作。 2. `java.util.regex.Pattern`:用于编译正则表达式,生成一个模式对象。 3. `java.util.regex....

    在Java编程中使用正则表达式的基本方法

    正则表达式是一个十分强大且复杂的工具,在Java编程中掌握其使用方法对于进行文本处理和模式识别具有重要的实际意义。对于初学者来说,了解和掌握基本的正则表达式概念和应用,是学习Java编程中不可或缺的一部分。...

Global site tag (gtag.js) - Google Analytics