`

如何使用Java自带的正则表达式

 
阅读更多

   正则表达式是个极端强大工具,提供了更强大的字符串处理能力,而且在字符串模式-匹配和字符串模式-替换方面富有弹性。Java JDK自 1.40版本就自带了支持正则表达式的包java.util.regex。在regex包中包括了两个类:Pattern(模式类)和Matcher(匹配器类)。Pattern类是用来表达和陈述所要搜索模式的对象,Matcher类是真正影响搜索的对象。另加一个新的例外类,PatternSyntaxException,当遇到不合法的搜索模式时,会抛出例外

(1)Pattern类和Matcher类

   Pattern类的实例表示以字符串形式指定的正则表达式(正则表达式是以字符串的形式给出来的,但就其本身来说并不是字符串,因为他有语法),其语法类似于Perl所用的语法。

用字符串形式指定的正则表达式,必须先编译成Pattern类的实例。生成的模式用于创建Matcher对象,它根据正则表达式与任意字符序列进行匹配。多个匹配器可以共享一个模式,因为它是非专属的。

  用compile方法把给定的正则表达式编译成模式,然后用matcher方法创建一个匹配器,这个匹配器将根据此模式对给定的输入串进行匹配。pattern 方法可返回编译这个模式所用的正则表达式。

        String str="aaabc efg ABC"; //待处理的字符串


        String regEx="aaa|fff";   //指定正则表达式


        Pattern p=Pattern.compile(regEx);//编译成模式

        Matcher m=p.matcher(str);//创建一个匹配器

        if( m.matches()){

          .... .....

        }

匹配器创建之后,就可以用它来执行三类不同的匹配操作:

matches方法根据此模式,对整个输入序列进行匹配。

lookingAt方法根据此模式,从开始处对输入序列进 行匹配。

find方法扫描输入序列,寻找下一个与模式匹配的地方。

这些方法都会返回一个表示成功或失败的布尔值。如果匹配成功,通过查询匹配器的状态,可以获得更多的信息。

 

 

 

 

(2)java构建正则表达式字符串的语法

正则表达式的语法要素有以下这些:常规字符,字符类(字符集合),通配符,量词,边界匹配符,运算符,组,标志序列

\d  等於 [0-9] 数字

\D  等於 [^0-9] 非数字

\s  等於 [ \t\n\x0B\f\r] 空白字符

\S  等於 [^ \t\n\x0B\f\r] 非空白字符

\w  等於 [a-zA-Z_0-9] 数字或是英文字

\W 等於 [^a-zA-Z_0-9] 非数字与英文字

$ 表示每行的结尾

. 匹配所有字符,包括空格、Tab字符甚至换行符

| 或 []方括号只允许匹配单个字符

^ 符号称为否符号。如果用在方括号内,表示不想要匹配的字符。 表示每行的开头

( ) 形成一个组合类型。如果想让它解释为字面上意思(即圆括号),也需要在它前面用双反斜

       线符 (\)将它转义为普通含义,否则被视为政治表达式中的特殊字符。

\b元字符是用来说明匹配单词的边界,它可以是空格或任何一种不同的标点符号(包括逗号,

     句号等)。

+ 匹配1次或多次

* 匹配0次或多次

? 匹配0次或1次

eg:

String bad = "\\b(\\w+)\\s+\\1\\b";
\b:是单词的边界符,\1:。向后扫描的次数;该表达式匹配的是:它有一个或多个空格符,后面还跟有一个与此相同的单词

(3)对字符串的处理

     Pattern类中预定义了许多静态标志,来进步一规范表达式。

不区分大小写的替换(符合reg中定义的字符串用***替换)

Matcher m = Pattern.compile(reg, Pattern.CASE_INSENSITIVE).matcher(str)

if(m.find()){
       System.out.println(m.replaceAll("***"));
 }

(4)java中使用正则表达式的方法

在String中有四个方法可以使用正则表达式,它们是matches、split、replaceAll和replaceFirst。

      String bad = "\\b(\\w+)\\s+\\1\\b"; 
     String[] str = {"Paris in the the spring","TJnndde","SHnnDde"};
     for(String s : str){
        System.out.println(s.replaceAll(bad, "*"));
       }

分享到:
评论

相关推荐

    常用java正则表达式

    在Java中使用正则表达式,通常会使用Java自带的标准库。但在撰写本文时,Java尚未正式支持正则表达式,因此可以通过Jakarta-ORO库来实现。以下是一个简单的使用示例: 1. **加载Jakarta-ORO库**:首先,从Apache...

    Java正则表达式测试工具

    在Java中,正则表达式的使用通常涉及`java.util.regex`包中的类,如`Pattern`和`Matcher`。`Pattern`类负责编译正则表达式,`Matcher`类则用于在特定输入上应用模式,执行匹配、查找、替换等操作。这款测试工具可以...

    JAVA 正则表达式(超详细)

    2. Java 正则表达式的历史:Java 一直以来没有自带对正则表达式的支持,直到 Java 1.40 版本引入了 java.util.regex 包。之前,许多第三方类库提供了对正则表达式的支持,但这些类库都不一致、兼容性差。 3. ...

    JAVA 正则表达式

    然而,从JavaJDK1.4版本开始,Java正式自带了支持正则表达式的包java.util.regex,这标志着Java正式进入了正则表达式的世界。 java.util.regex包提供了两个核心类:Pattern和Matcher。Pattern类用于表达和陈述所要...

    正则表达式手册.zip

    例如,在Perl中就内建了一个功能强大的正则表达式引擎,还有java语言自带的。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有...

    正则表达式傻瓜式宝典

    9. **调试与测试**:介绍如何使用正则表达式测试工具,如在线的RegExr或Java自带的Pattern类的debug()方法,来调试和验证正则表达式。 10. **常见问题与陷阱**:正则表达式中的常见错误和陷阱,如无限循环、贪婪与...

    使用正则表达式替换报表名称中的特殊字符(推荐)

    例如,在Perl中就内建了一个功能强大的正则表达式引擎,还有java语言自带的。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有...

    Python基于正则表达式实现检查文件内容的方法【文件检索】

    本文实例讲述了Python基于正则表达式实现检查文件内容的方法分享给大家供大家参考,具体如下: 这个是之前就在学python,欣赏python的小巧但是功能强大,是连电池都自带的语言。平时工作中用Java ,觉得python在日常...

    Java必备工具包

    综上所述,"Java必备工具包"涵盖了Java API、GUI编程、企业级开发框架以及正则表达式等多个重要领域,是Java初学者和进阶者都非常有用的参考资料。通过深入学习和实践这些内容,开发者可以增强自己的Java编程能力,...

    正则表达式手册

    例如,在Perl中就内建了一个功能强大的正则表达式引擎,还有java语言自带的。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有...

    java采集网站数据,可以自定义修改采集

    在这个项目中,用户可以通过修改正则表达式来定制数据提取规则,正则表达式是匹配和处理文本的强大工具,能够精确匹配特定模式的字符串。 Java中的数据采集通常会用到以下关键知识点: 1. **Jsoup**:这是一个用于...

    RegexBuddy-v3.1.0

    RegexBuddy是学习、使用正则表达式的必备工具,其包含PCRE、Java、.Net、Perl、Ruby、Tcl、Javascript等主流正则表达式引擎,提供了正则表达式分析、测试、调试功能,并包含大量实用例子和不同语言、引擎下的代码...

    Hadoop源代码分析(三)

    Hadoop并没有简单地采用Java自带的序列化方法,而是设计了一套自有的系统,这主要是为了提高性能、可扩展性和跨平台兼容性。在Hadoop的`org.apache.hadoop.io`包中,定义了大量的可序列化对象,这些对象都实现了`...

    Grok:深入解析日志与数据的强大工具.zip

    这时,用户可以通过两种方式进行扩展:一是使用正则表达式直接定义新的模式;二是创建自定义的Grok模式库,然后在Logstash等工具中引用。这两种方式都提供了足够的灵活性,以适应各种复杂日志格式的解析需求。 五、...

    ASP用户注册代码

    1. **使用更现代的正则表达式**:对于邮箱地址的验证,可以使用更为精确的正则表达式来确保更高的兼容性和准确性。 2. **增加表单元素的ID**:为每个表单元素添加ID,以便于使用jQuery等库进行更简洁的操作。 3. **...

    记事本用java写的

    标题中的“记事本用Java写的”意味着我们将讨论一个使用Java编程语言开发的文本编辑器应用,类似于系统自带的记事本程序。这种记事本应用程序通常具备基本的文字编辑功能,如创建、打开、保存、查找、替换、复制、...

Global site tag (gtag.js) - Google Analytics