正则表达试

使用正则表达试可以进行数据的匹配,字符串的验证,拆分,替换等功能。通过正则表达式可以拆分指定的各种表达式

如:当判断一个数字是否由数字组成可以有一下两种方法:

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]ab 或 c(简单类)
[^abc]任何字符,除了 ab 或 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");
		}
	}

}
程序运行结果为:





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值