使用正则表达试可以进行数据的匹配,字符串的验证,拆分,替换等功能。通过正则表达式可以拆分指定的各种表达式
如:当判断一个数字是否由数字组成可以有一下两种方法:
public class RegexDemo01 {
//判断一个字符串是否由数字组成,将该字符串拆分成单个的字符,判断每一个字符是否为数字字符
public static void main(String[] args) {
String str="1234567890";
boolean flag=true;
char c[]=str.toCharArray();//将字符串转变为字符数组
for(int i=0;i<c.length;i++)
{
if(c[i]<'0'||c[i]>'9')//表明当前字符不是数字字符
{
flag=false;
break;
}
}
if(flag)//表明当前字符依然是数字字符
{
System.out.println("字符串是由数字字符组成。");
}
else
{
System.out.println("字符串不是由数字字符组成。");
}
}
}
正则规则必须在pattern类当中才能够使用,matcher类用于验证一个字符串是否符合规范
通过正则表达式的方式来判断字符串是否由数字字符组成:import java.util.regex.Pattern;
public class RegexDemo02 {
public static void main(String[] args) {
String str="1234567890";
if(Pattern.compile("[0-9]+").matcher(str).matches())//[0-9]为一组正则表达试,+表示可以出现一次或多次
{
System.out.println("是由数字组成!");
}
else
System.out.println("不是由数字组成!");
}
}
程序运行为:
是由数字组成!
以下为常用的一些正则表达试内容:字符 | |
---|---|
x | 字符 x |
\\ | 反斜线字符 |
字符类 | |
---|---|
[abc] | a、b 或 c(简单类) |
[^abc] | 任何字符,除了 a、b 或 c(否定) |
[a-zA-Z] | a 到 z 或 A 到 Z,两头的字母包括在内(范围) |
预定义字符类 | |
---|---|
. | 任何字符(与行结束符可能匹配也可能不匹配) |
\d | 数字:[0-9] |
\D | 非数字: [^0-9] |
\s | 空白字符:[ \t\n\x0B\f\r] |
\S | 非空白字符:[^\s] |
\w | 单词字符:[a-zA-Z_0-9] |
\W | 非单词字符:[^\w] |
X? | X,一次或一次也没有 |
X* | X,零次或多次 |
X+ | X,一次或多次 |
X{n} | X,恰好 n 次 |
X{n,} | X,至少 n 次 |
X{n,m} | X,至少 n 次,但是不超过 m 次 |
public class RegexDemo03 {
public static void main(String[] args) {
String str="2017-01-23";
String pat="\\d{4}-\\d{2}-\\d{2}";//指定好正则表达式当中的格式,年为4位,月为两位,日也为两位
Pattern p=Pattern.compile(pat);//实例化pattern类对象并指定具体的正则表达试格式
Matcher m=p.matcher(str);//创建matcher类的实例化对象并确定str字符串是否符合指定的正则表达式格式
if(m.matches())//判断正则是否匹配
{
System.out.println("日期格式合法!");
}
else
{
System.out.println("日期格式不合法!");
}
}
}
程序运行结果:
日期格式合法!
通过正则表达试来对字符串当中的内容进行替换和删除操作:
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class RegexDemo04 {
//将字符串当中的非数字字符进行取出操作,即按照数字进行字符串的拆分操作
public static void main(String[] args) {
String str="A1B22C333D4444E55555F";
String pat="\\d+";//指定好正则表达式,按照数字(1个或多个)进行正则的拆分操作
Pattern p=Pattern.compile(pat);//实例化正则驱动对象,指定具体的正则拆分表达式规则
String s[]=p.split(str);//驱动正则按照指定的正则方式进行字符串的拆分操作,并拆分得到的字符存放到字符串数组当中
for(int x=0;x<s.length;x++)
{//对拆分的到的正则表达式进行输出
System.out.print(s[x]+"\t");
}
//对指定的正则进行替换操作
Matcher m=p.matcher(str);//实例化matcher类的实例化对象
String newString=m.replaceAll("_");//对指定的正则表达式进行替换操作,即将数字全部替换成下滑线
System.out.println("\n将正则表达试当中的数字全部替换成下滑线");
System.out.println(newString);
}
}
程序运行结果为:
在JDK1.4之后java在string当中开始直接支持正则类
public class RegexDemo06 {
//同过String类当中的指定的方法来对字符串进行正则操作
public static void main(String[] args) {
String str="A1B22C333D4444E55555";
String newString=str.replaceAll("\\d+","_");//通过字符串类当中的方法对指定的正则表达式进行替换操作
System.out.println(newString);
boolean temp="2017-01-23".matches("\\d{4}-\\d{2}-\\d{2}");//判断字符日期是否符合指定的日期正则匹配模式
System.out.println("\n日期字符匹配是否成功:"+temp);
String s[]=str.split("\\d+");//对字符串进行指定的正则拆分操作
for(int i=0;i<s.length;i++)
{//对通过正则拆分的到的字符串进行输出操作
System.out.print(s[i]+"\t");
}
}
}
程序运行结果为: