正则表达式是个极端强大工具,提供了更强大的字符串处理能力,而且在字符串模式-匹配和字符串模式-替换方面富有弹性。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尚未正式支持正则表达式,因此可以通过Jakarta-ORO库来实现。以下是一个简单的使用示例: 1. **加载Jakarta-ORO库**:首先,从Apache...
在Java中,正则表达式的使用通常涉及`java.util.regex`包中的类,如`Pattern`和`Matcher`。`Pattern`类负责编译正则表达式,`Matcher`类则用于在特定输入上应用模式,执行匹配、查找、替换等操作。这款测试工具可以...
2. Java 正则表达式的历史:Java 一直以来没有自带对正则表达式的支持,直到 Java 1.40 版本引入了 java.util.regex 包。之前,许多第三方类库提供了对正则表达式的支持,但这些类库都不一致、兼容性差。 3. ...
然而,从JavaJDK1.4版本开始,Java正式自带了支持正则表达式的包java.util.regex,这标志着Java正式进入了正则表达式的世界。 java.util.regex包提供了两个核心类:Pattern和Matcher。Pattern类用于表达和陈述所要...
例如,在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的小巧但是功能强大,是连电池都自带的语言。平时工作中用Java ,觉得python在日常...
综上所述,"Java必备工具包"涵盖了Java API、GUI编程、企业级开发框架以及正则表达式等多个重要领域,是Java初学者和进阶者都非常有用的参考资料。通过深入学习和实践这些内容,开发者可以增强自己的Java编程能力,...
例如,在Perl中就内建了一个功能强大的正则表达式引擎,还有java语言自带的。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有...
在这个项目中,用户可以通过修改正则表达式来定制数据提取规则,正则表达式是匹配和处理文本的强大工具,能够精确匹配特定模式的字符串。 Java中的数据采集通常会用到以下关键知识点: 1. **Jsoup**:这是一个用于...
RegexBuddy是学习、使用正则表达式的必备工具,其包含PCRE、Java、.Net、Perl、Ruby、Tcl、Javascript等主流正则表达式引擎,提供了正则表达式分析、测试、调试功能,并包含大量实用例子和不同语言、引擎下的代码...
Hadoop并没有简单地采用Java自带的序列化方法,而是设计了一套自有的系统,这主要是为了提高性能、可扩展性和跨平台兼容性。在Hadoop的`org.apache.hadoop.io`包中,定义了大量的可序列化对象,这些对象都实现了`...
这时,用户可以通过两种方式进行扩展:一是使用正则表达式直接定义新的模式;二是创建自定义的Grok模式库,然后在Logstash等工具中引用。这两种方式都提供了足够的灵活性,以适应各种复杂日志格式的解析需求。 五、...
1. **使用更现代的正则表达式**:对于邮箱地址的验证,可以使用更为精确的正则表达式来确保更高的兼容性和准确性。 2. **增加表单元素的ID**:为每个表单元素添加ID,以便于使用jQuery等库进行更简洁的操作。 3. **...
标题中的“记事本用Java写的”意味着我们将讨论一个使用Java编程语言开发的文本编辑器应用,类似于系统自带的记事本程序。这种记事本应用程序通常具备基本的文字编辑功能,如创建、打开、保存、查找、替换、复制、...