$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讲义(第二版)》
(完)
随机推荐
- 使用httpClient发送get\post请求
maven依赖 <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId&g ...
- [原创]超强C#图片上传,加水印,自动生成缩略图源代码
<%@ Page Language=“C#“ AutoEventWireup=“true“ %> <%@ Import Namespace=“System“ %> <%@ ...
- 面向对象JSON的继承(复制)与函数的继承(复制)
今天这里和大家分享下如何复制对象 的属性 创建 对象的方式有三种,这里和大家分享下最常用的几种 1.JSON格式的方式创建对象 2.用函数的方式创建,然后用new关键字实例化对象,关于this的指向问 ...
- Spring MVC下拉选项(Select)
以下示例显示如何在使用Spring Web MVC框架的表单中使用下拉选项(Dropdown).首先使用Eclipse IDE来创建一个WEB工程,实现一个让用户可选择自己所在的国家的功能.并按照以下 ...
- echarts Y轴刻度保留几位小数
yAxis: [ { type: 'value', name: '雨量(mm)', nameLocation: 'start', inverse: true, axisLabel: { ...
- php简单工厂模式
工厂类中有一个创建对象的方法,根据传入参数的不同来生成不同的对象 class Operation extends Model{ private $numberA; private $numberB; ...
- 【BZOJ3122】[Sdoi2013]随机数生成器 BSGS+exgcd+特判
[BZOJ3122][Sdoi2013]随机数生成器 Description Input 输入含有多组数据,第一行一个正整数T,表示这个测试点内的数据组数. 接下来T行,每行有五个整数p,a,b, ...
- VLC 媒体播放器
VLC 媒体播放器 VLC 媒体播放器是一个便携式. 免费.开源. 跨平台的媒体播放器. VideoLAN 项目的流式媒体服务器.分为Windows Phone版本和Android版本. 下载地址: ...
- 用javascript复制富文本
由于项目需求,希望能够用javascript复制富文本格式的数据,例如全选一个网页Ctrl+C, Ctrl+V到一个word文档中,数据还是原来的格式,显示出来的样子也都和原来一样.现在希望使用jav ...
- Adjacency List
w Python Patterns - Implementing Graphs | Python.orghttps://www.python.org/doc/essays/graphs/ Graph ...