`

如何使用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版的正则表达式测试工具,首先要按照JRE软件才能运行(压缩包中自带JRE软件)。 运行方式,命令行:java -jar QRe_V0.2.jar

    正则表达式手册.zip

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

    JAVA 正则表达式陈广佳版本(超详细)

    在Sun的Java JDK 1.40版本中,Java自带了支持正则表达式的包,本文就抛砖引玉地介绍了如何使用java.util.regex包。  可粗略估计一下,除了偶尔用Linux的外,其他Linu x用户都会遇到正则表达式。正则表达式是个极端...

    正则表达式

    正则表达式 包括表达式详解文档,4种常用功能,Java自带的正则表达式的包

    JAVA正则表达式校验qq号码的方法

    Java作为一种开发语言,有许多值得推荐的地方,但是它一直以来没有自带对正则表达式的支持。下面小编给大家带来了JAVA正则表达式校验qq号码的方法,需要的朋友参考下吧

    Java 正则表达式

    正则表达式学习起来其实是很简单的,不多的几个较为抽象的概念也很容易理解。之所以很多人感觉正则表达式比较复杂,一方面是因为大多数的文档没有做到由浅入深地讲解,概念上没有注意先后顺序,给读者的理解带来困难...

    一个正则表达式导致CPU 利用率居高不下

    通过 Java 自带的线程 Dump 工具,我们导出了出问题的堆栈信息。 藏在正则表达式里的陷阱,一个正则表达式导致CPU 利用率居高不下 我们可以看到所有的堆栈都指向了一个名为 validateUrl 的方法,这样的报错信息在...

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

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

    藏在正则表达式里的陷阱(推荐)

    前几天线上一个项目监控信息...很奇怪,一个正则表达式怎么会导致 CPU 利用率居高不下。为了弄清楚复现问题,我们将其中的关键代码摘抄出来,做了个简单的单元测试。 public static void main(String[] args) { Stri

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

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

    正则表达式手册

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

    RegexBuddy-v3.1.0

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

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

    java采集网站数据,可以自定义修改采集,只要修改里面的正则表达式就可以了,软件自带了雅虎知识堂,8848look

    Java必备工具包

    里面好多对java学习有用的东西,学习java必须具备的帮助文档,虽然不全但是很管用,好好学吧,同志们

    notepad++ 8.5.2 x64

    notepad++是一款免费的开源文本编辑软件,支持windows系统、支持中文版。作为文本编辑时比windows自带的记事本更强大,除了适合作为一款轻量型的文本编辑软件...6、正则表达式和宏录制播放和插件。 神器、神器、神器。

    Android Apktool M v2.4.0-230428 安卓反汇编神器

    Apktool M,俄罗斯编程爱好者开发的一款完全免费的APK反...-文件搜索支持正则表达式搜索及批量替换 -支持svg/xml文件预览(长按文件可预览) 切换中文步骤(此应用自带中文语言) Settings->Application->Language

    Apktool M v2.4.0-231005 完全免费的APK反编译工具,安卓反汇编神器

    -文件搜索支持正则表达式搜索及批量替换 -支持svg/xml文件预览(长按文件可预览) # 切换中文步骤(此应用自带中文语言) Settings->Application->Language # 切换中文步骤(此应用自带中文语言) Settings->...

    Apktool M v2.4.0-230829 完全免费的APK反编译工具,安卓反汇编神器

    -文件搜索支持正则表达式搜索及批量替换 -支持svg/xml文件预览(长按文件可预览) # 切换中文步骤(此应用自带中文语言) Settings->Application->Language # 切换中文步骤(此应用自带中文语言) Settings->...

    Eclipse常用插件下载网址

    Eclipse常用插件有: 0.lomboz J2EE插件,开发JSP,EJB ...8.RegEx Test 测试正则表达式 9.JasperAssistant 报表插件(强,要钱的) 10.Jigloo GUI Builder JAVA的GUI编辑插件

Global site tag (gtag.js) - Google Analytics