- 浏览: 362292 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (511)
- AgileMethodology (4)
- RDBMS (32)
- NoSQL (16)
- Java (27)
- Python (28)
- Maven (15)
- Linux (27)
- CommonUtils (13)
- IDE (8)
- JavaScript (17)
- jQuery (2)
- OSGi (2)
- JavaWeb (5)
- Spring (37)
- Struts2 (3)
- ORM (13)
- Ant (1)
- apache-tiles (1)
- FreeMarker (2)
- JSON (8)
- XML (1)
- JUnit (3)
- Lucene (1)
- Web Service (9)
- Design Pattern (13)
- Algorithm (21)
- JVM (14)
- Hadoop (16)
- Spark (5)
- Scala (31)
- Git (4)
- Server (3)
- Node.js (18)
- Concurrent (42)
- Lock (9)
- Collections (3)
- Network (11)
- MicroService (7)
- Docker (13)
- FP (20)
- spring.io (2)
- ELK (1)
- Kafka (5)
最新评论
使用正则表达式可以方便地对数据进行匹配,还可以 执行更加复杂的字符串验证、拆分、替换功能。
示例程序RegexDemo01.java判断一个字符串是否由数字组成(不使用正则表达式)
package com.fairy.regex; public class RegexDemo01 { public static void main(String[] args) { String str = "1234567890"; boolean flag = true; char[] ch = str.toCharArray(); for (char c : ch) { if (c < '0' || c > '9') { flag = false; break; } } if (flag) { System.out.println("是由数字组成!"); } else { System.out.println("不是由数字组成!"); } } }
示例程序RegexDemo02.java,判断一个字符串是否由数字组成(使用正则表达式)
package com.fairy.regex; import java.util.regex.Pattern; public class RegexDemo02 { public static void main(String[] args) { String str = "1234567890"; if (Pattern.compile("\\d+").matcher(str).matches()) { System.out.println("是由数字组成!"); } else { System.out.println("不是由数字组成!"); } } }
以上两段代码完成了同样的功能,但是代码2的长度明显比代码1短很多。实际上具体的正则表达式操作类是需要通过Pattern和Matcher两个类完成操作的。如果要在程序中应用正则表达式则必须依靠Pattern类与Matcher类,这两个类都在java.util.regex包中定义。Pattern类的主要作用是进行正则规范的编写,而Matcher类主要是执行规范,验证一个字符串是否符合其规范。
常用的正则规范的定义如下表所示
数量表示(X表示一组规范)定义如下表所示
逻辑运算符(X、Y表示一组规范)定义如下表所示
在Pattern类中直接使用上述三张表中的正则规则则即可完成相应的操作,Pattern类的常用方法如下表所示
在Pattern类中如果要取得Pattern类实例,则必须调用compile()方法。
如果要验证一个字符串是否符合规范,则可以使用Matcher类,Matcher类的常用方法如下表所示。
示例程序RegexDemo03.java,验证一个字符串是否是合法的日期格式
package com.fairy.regex; import java.util.regex.Pattern; public class RegexDemo03 { public static void main(String[] args) { String str = "2012-12-21"; String pat = "\\d{4}-\\d{2}-\\d{2}"; if (Pattern.compile(pat).matcher(str).matches()) { System.out.println("日期格式合法!"); } else { System.out.println("日期格式不合法!"); } } }
在程序中"\"字符是需要进行转义的,两个 "\"实际上表示的是一个"\",所以实际上"\\d"表示的是"\d"。
示例程序RegexDemo04.java,按照字符串的数字将字符串拆分
package com.fairy.regex; import java.util.regex.Pattern; public class RegexDemo04 { public static void main(String[] args) { String str = "A1B22C333D4444E55555F"; String pat = "\\d+"; String[] strings = Pattern.compile(pat).split(str); for (String s : strings) { System.out.print(s + "\t"); } } }
示例程序RegexDemo05.java,将全部的数字替换成“_”
package com.fairy.regex; import java.util.regex.Pattern; public class RegexDemo05 { public static void main(String[] args) { String str = "A1B22C333D4444E55555F"; String pat = "\\d+"; String newStr = Pattern.compile(pat).matcher(str).replaceAll("_"); System.out.println(newStr); } }
String类对正则表达式的支持
在String类中有3个方法支持正则操作,如下标所示。
示例程序RegexDemo06.java,使用String修改之前操作
package com.fairy.regex; public class RegexDemo06 { public static void main(String[] args) { String str1 = "A1B22C333D4444E55555F".replaceAll("\\d+", "_"); boolean temp = "2012-12-21".matches("\\d{4}-\\d{2}-\\d{2}"); String[] strings = "A1B22C333D4444E55555F".split("\\d+"); System.out.println(str1); System.out.println(temp); for (String s : strings) { System.out.print(s + "\t"); } } }
示例程序RegexDemo07.java,对于一些敏感字符操作时需要转义
package com.fairy.regex; public class RegexDemo07 { public static void main(String[] args) { String info = "JSP+Servlet+JDBC|Struts+Spring+Hibernate|JSF+EJB+JPA"; String[] strings = info.split("\\|"); for (String s : strings) { String[] string2 = s.split("\\+"); System.out.println(string2[0] + "\t" + string2[1] + "\t" + string2[2]); } } }
在正则操作中,如果发现某些字符无法直接使用,则最好将其进行转义处理。
发表评论
-
Java 8 获取当前日期
2018-12-12 14:38 653原创转载请注明出处:https://agilestyle. ... -
abstract class 和 interface区别
2017-09-06 23:12 364原创转载请注明出处:http://agilestyle.i ... -
Difference between <? super T> and <? extends T>
2017-05-24 10:34 448原创转载请注明出处:http://agilestyle.i ... -
a=a+b和a+=b的区别
2017-03-02 22:47 616原创转载请注明出处:http://agilestyle.i ... -
Java Object 九大方法
2017-02-22 21:46 354原创转载请注明出处:http://agilestyle.i ... -
Java Collections Framework Diagram
2016-12-14 15:43 383原创转载请注明出处:http://agilestyle.i ... -
Java三大领域+Python的技能图谱
2016-08-25 09:48 1768转自:来吧 主流编程语言图谱+知识库都在这了 Ja ... -
Top 8 Diagrams for Understanding Java(转)
2016-08-23 10:24 268转自:http://www.programcreek.co ... -
stream classdesc serialVersionUID = 1, local class serialVersionUID = 2
2016-05-27 14:56 3355原创转载请注明出处:http://agilestyle.i ... -
技术资料链接
2016-03-19 12:59 556LeeCode http://www.cnblogs.c ... -
Java取模
2015-09-13 11:41 704取模的规律:取模的结果符号永远与被除数的符号相同 pack ... -
Java面试——字符串
2013-09-18 22:53 917String中的常用方法 1.写出下面程序的输出结 ... -
Java面试——数组
2013-09-18 22:22 8951.下面哪几个选项是合 ... -
数据类型转换
2013-09-17 22:27 780数据类型的转换方式 ... -
Java面试——数据类型及类型转换
2013-09-16 22:42 13521.int和Integer有什么区别? 2.下面选 ... -
实例成员和类成员的区别
2013-09-16 12:05 1135下面关于实例成员的说法,哪些是正确的?CD A.实例成员也 ... -
clone() 方法
2013-03-11 13:54 768在应用开发过程中,我们可能会需要拷贝(copy)一个现有的 ... -
多线程实现方法
2013-03-06 11:05 701两种实现方法: 继承Thread类, 实现Runna ... -
Thread common example
2012-08-02 16:48 7591.设计 4 个线程,其中两个线程每次对 j增加1,另外两个线 ... -
Polymorphism classic example
2012-07-27 16:01 864The classic example in OOP is t ...
相关推荐
Java经典书籍,java正则表达式,英文版。
You will begin by discovering what regular expressions are and how they work with Java. This easy-to-follow guide is a great place from which to familiarize yourself with the core concepts of regular ...
Java 9 Regular Expressions 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
Java 9 Regular Expressions 英文mobi 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
Java 9 Regular Expressions 英文无水印pdf pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或...
High Performance Java IO And Regular Expressions 高性能JAVA IO 与正则表达式
《Wrox - Beginning Regular Expressions》是一本专为初学者设计的正则表达式入门教程。这本书深入浅出地介绍了正则表达式的基本概念、语法和应用,旨在帮助读者掌握这一强大的文本处理工具。 正则表达式(Regular ...
由于当前版本的 Java Tutorial 是基于 JDK 6.0 的,因此其中的示例程序也用到了 JDK 6.0 中的新增类库,但正则表达式在 JDK 1.4 就已经存在了,为了方便大家使用,改写了部分的源代码,源代码类名中后缀为“V4”的...
**"Regular Expressions Cookbook.pdf"** 这个标题明确指出本书的主题是正则表达式(Regular Expressions,简称 Regex)。正则表达式是一种强大的文本处理工具,被广泛应用于搜索、替换以及解析文本等任务中。...
正则表达式(Regular Expressions,简称regex)是编程领域中一种强大的文本处理工具,它用于模式匹配、数据提取、验证输入等任务。这个“Regular.Expressions”资料包显然是为开发者设计的,旨在深入理解正则表达式...
书名:Mastering Regular Expressions, 3rd Edition 格式:CHM 语言:English 简介: Regular expressions are an extremely powerful tool for manipulating text and data. They are now standard ...
正则表达式(Regular Expression)是编程语言中用于模式匹配和文本搜索的强大工具,广泛应用于数据验证、文本提取、搜索与替换等多个领域。 本书涵盖了正则表达式的各个方面,包括基础语法、高级特性和实践应用。在...
随着互联网的迅速发展,几乎所有工具软件和程序...本书主要讲解了正则表达式的特性和流派、匹配原理、优化原则、实用诀窍以及调校措施,并详细介绍了正则表达式在Perl、Java、.NET、PHP中的用法。中文版更方便阅读。
C# 提供了.NET Framework下的`System.Text.RegularExpressions`命名空间,该命名空间包含`Regex`类,用于处理正则表达式操作。例如: ```csharp string pattern = @"\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b"; ...