版权声明:本文为博主原创文章,未经博主允许不得转载,转载请务必注明出处: https://blog.csdn.net/MaybeForever/article/details/89462570
一、正则表达式
正则表达式:就是使用一系列预定义的特殊字符来描述一个字符串的格式规则,然后使用该格式规则匹配某个字符串是否符合格式要求。
表达式 | 意义 |
---|---|
[ ] | 表示1个字符 |
[abc] | 表示abc中任一个字符,字符a、b或c |
[^abc] | 表示除了a、b、c之外的任意字符 |
[a-zA-Z0-9] | 表示由字母、数字组成,a-z,A-Z,0-9中任意一个字符 |
\d | 表示任意一个数字字符,相当于[0-9] |
\w | 表示数字、字母、下划线,相当于[a-zA-Z0-9_] |
\s | 表示所有空白字符(换行、空格等) |
\D | 表示非数字字符 |
\W | 表示非字母、数字、下划线 |
\S | 表示所有非空白字符 |
( ) | 表示分组,可将一系列正则表达式看作一个整体,分组时可使用“l”表示或关系 |
^ | 表示字符串开始 |
$ | 表示字符串结束 |
. | 匹配换行符外的任意一个字符 |
X | 表示一个X |
X? | 表示0个或1个X |
X* | 表示0个或任意多个X |
X+ | 表示1个到任意多个X(大于等于1个X) |
X{n} | 表示n个X |
X{n,} | 表示n到任意多个X(大于等于n个X) |
X{n,m} | 表示n个到m个X |
注:
①在程序中“\”字符是需要进行转义的,两个“\”实际上表示的是一个“\”,所以实际上"\\d"表示的是“\d”
②正则表达式就算不写^$也做完全匹配验证。
二、Pattern类和Matcher类
如果要在程序中应用正则表达式则必须依靠Pattern类与Matcher类,这两个类都在java.util.regex包中定义。Pattern类主要作用是进行正则规范的编写,而Matcher类主要是执行规范,验证一个字符串是否符合其规范。
(1)Pattern类
在Pattern类中直接使用正则表达式的正则规则即可完成相关的操作,Pattern类的常用方法如下所示:
public static Pattern compile(String regex)//指定正则表达式规则
public Matcher matcher(CharSequence input)//返回Matcher类实例
public String[] split(CharSequence input)//字符串拆分
在Pattern类中如果要取得Pattern类实例,则必须调用compile()方法。
Pattern类应用示例如下:
package com.haobi;
import java.util.regex.Pattern;
/*
* 使用正则表达式验证(Pattern类的正则规范)
*/
public class Test1 {
public static void main(String[] args) {
String str = "1234567980";//此字符串由数字组成
if(Pattern.compile("[0-9]+").matcher(str).matches()) {//使用正则表达式验证
System.out.println("是由数字组成!");
}else {
System.out.println("不是由数字组成!");
}
}
}
//程序输出结果如下:
是由数字组成!
(2)Matcher类
如果要验证一个字符串是否符合规范,则可以使用Matcher类,Matcher类的常用方法如下所示:
public boolean matches()//执行验证
public String replaceAll(String replacement)//字符串替换
Matcher类应用示例如下:
package com.haobi;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
* Matcher类的替换操作
* 将全部的数字替换成_
*/
public class Test2 {
public static void main(String[] args) {
String str = "A1B256164C4564D4561E4654F";
String pat = "\\d+";//定义替换规则
Pattern p = Pattern.compile(pat);//实例化Pattern类
Matcher m = p.matcher(str);//实例化Matcher类
String newStr = m.replaceAll("_");//替换数字
System.out.println(newStr);
}
}
三、String类的正则API
(1)matches方法:(字符串匹配)
public boolean matches(String regex)
//使用给定的正则表达式来匹配当前字符串是否满足格式要求,满足返回true,不满足返回false。
(2)split方法:(字符串拆分)
public String[] split(String regex)
//将当前字符串中满足正则表达式的地方进行拆分,保留剩下的部分。
(3)replaceAll方法:(字符串替换)
public String replaceAll(String regex, String replacement)
//字符串中满足正则表达式的部分替换为给定的字符串