$Java正则表达式基础整理
(一)正则表达式及语法简介
- String类使用正则表达式的几个方法:
- 正则表达式支持的合法字符:
- 特殊字符:
- 预定义字符:
- 方括号表达式:
- 圆括号表达式:用于将多个表达式组成一个子表达式,可以使用或运算符“|”,比如正则表达式:"(aa|bb|cc)"就表示匹配"aa"、"bb"、"cc"三个字符串中的其中一个。
- 边界匹配符:
- 贪婪、勉强、占有模式的数量标识符:
(二)Java正则表达式的简单用法
- 两个关键类:(1)Pattern:正则表达式编译后在内存中的表示形式。是不可变类,可供多个线程并发使用;(2)Matcher:保存执行匹配所涉及的各种状态,多个Matcher对象可以共享一个Pattern对象。
- 简单用法程序示例:
System.out.println(Pattern.matches("a\\wb", "a_b")); // 输出:true
Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aabzaaadaaafbc");
System.out.println(m.matches()); // 输出:false Matcher类的常用方法:
- 程序举例:
public static void test1() {
System.out.println(Pattern.matches("a\\wb", "a_b")); // 输出:true Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aabzaaadaaafbc"); System.out.println(m.matches()); // 输出:false
System.out.println(m.find()); // 输出:true
System.out.println(m.group()); // 输出:b
System.out.println(m.start()); // 输出:2
System.out.println(m.end()); // 输出:3
System.out.println(m.lookingAt()); // 输出:true
m.reset("zab");
System.out.println(m.lookingAt()); // 输出:false
} public static void test2() {
Matcher m = Pattern.compile("\\w+").matcher("Java is very easy!"); while (m.find()) {
System.out.println(m.group() + "子串的起始位置:" + m.start() + ",结束位置:"
+ m.end());
} int i = 0;
while (m.find(i)) {
System.out.print(m.group() + "\t");
i++;
} // 输出:
// Java子串的起始位置:0,结束位置:4
// is子串的起始位置:5,结束位置:7
// very子串的起始位置:8,结束位置:12
// easy子串的起始位置:13,结束位置:17
// Java ava va a is is s very very ery ry y easy easy asy sy y
} public static void test3() {
String[] mails = { "Jiayongji@163.com", "Jiayongji@gmail.com",
"jy@hust.org", "wawa@abc.cc" };
String mailRegEx = "\\w{3,20}@\\w+\\.(com|cn|edu|org|net|gov)";
Pattern mailPattern = Pattern.compile(mailRegEx); Matcher mailMatcher = null; for (String mail : mails) {
if (mailMatcher == null) {
mailMatcher = mailPattern.matcher(mail);
} else {
mailMatcher.reset(mail);
} System.out.println(mail + (mailMatcher.matches() ? "是" : "不是")
+ "一个合法的邮箱地址");
} // 输出:
// Jiayongji@163.com是一个合法的邮箱地址
// Jiayongji@gmail.com是一个合法的邮箱地址
// jy@hust.org不是一个合法的邮箱地址
// wawa@abc.cc不是一个合法的邮箱地址 } public static void test4() {
Matcher m = Pattern.compile("\\bre\\w*").matcher(
"Java is real good at inrestart and regex.");
System.out.println(m.replaceAll("哈哈")); // 输出:
// Java is 哈哈 good at inrestart and 哈哈. }
Refer:《疯狂Java讲义(第二版)》
(完)
随机推荐
- https原理与实践
HTTPS 原理与证书实践 分类: Web应用 1.1 网络安全知识 1.1.1 网结安全出现背景 网络就是实现不同主机之间的通讯,网络出现之初利用TCP/IP协议簇的相关协议概念,已经满足了 ...
- java开发目前技术选型
目前系统采用 1.后端 服务框架:Dubbo.zookeeper 缓存:Redis.ehcache 消息中间件:ActiveMQ,kafka 负载均衡:Nginx 分布式文件:FastDFS 数据库连 ...
- Spring MVC密码处理
以下示例显示如何在使用Spring Web MVC框架的表单中使用密码.首先使用Eclipse IDE来创建一个WEB工程,并按照以下步骤使用Spring Web Framework开发基于动态表单的 ...
- python requests.exceptions.ConnectionError
今天遇到一个奇葩问题, 1.r.request.post(url) 2..print r. status_code 居然第一步就报错了,原因是url不正确,按道理应该可以走到第二步然后输入404的 i ...
- zmq重点
The zmq_msg_send(3) method does not actually send the message to the socket connection(s). It queues ...
- OpenCV学习笔记十四:opencv_objdetect模块
一,简介: 该库用于目标检测.
- 制作dos启动u盘
需要准备的工具: 空U盘的U盘HP优盘启动盘格式化工具 链接:https://pan.baidu.com/s/1i59wgUp 密码:l5ke 1.1插入U盘,打开 HP优盘启动盘格式化工具 1. ...
- Android错误——基础篇
1. Android工程在真机上运行调试: 花了二个小时的时间来把App热部署到小米机上,简直让我寒透了心, 原本是按照网上提供的步骤一步步的做着,没想到小米神机居然出的是什么内测小米助手,两个窗口来 ...
- ERROR 1130: Host '' is not allowed to connect to thisMySQL server
今天1网友求助,说自己PHPmyadmin能够正常连接数据库,使用sqlyog报错: ERROR 1130: Host '172.27.214.1' is not allowed to connect ...
- Xamarin.Forms学习之Platform-specific API和文件操作
这篇文章的分享原由是由于上篇关于Properties的保存不了,调用SavePropertiesAsync()方法也不行,所以我希望通过操作文件的方式保存我的需要的数据,然后我看了一下电子书中的第二十 ...