Java正则表达式基础应用复习

1 regex的概念

正则表达式regex通常被用于判断语句中,用来检查某一字符串是否满足某一格式。正则表达式是含有一些具有特殊意义字符的字符串,这些特殊字符称为正则表达式的元字符。例如,“\\d”表示数字0-9之中的任意一个,“\\d”就是一个元字符;“\\w”表示可用作标识符的元字符,但不包括美元符号$。注意:在正则表达式中“.”表示任何一个字符,因此在正则表达式中如果想使用普通意义的点字符“.”,必须使用转义字符“\”。在正则表达式中可以使用方括号括起来若干个字符来表示一个元字符,该字符可代表方括号中的任何一个字符。例如,reg = "[abc]4",这样字符串"a4","b4","c4"都是和正则表达式匹配的字符串。在正则表达式中允许使用限定修饰符来限定元字符出现的次数。例如,"A*"代表A可以在字符串中出现0次或者多次,A{n}代表A正好出现n次,A{n,}代表A至少出现n次。正则表达式对字符串的主要操作有:匹配切割替换获取。正则表达式也可应用于网络爬虫程序中。

2 程序示例

(1)匹配操作示例1
package captain;

//该程序利用正则表达式来判断给定的字符串是否为合法的邮箱地址。
public class RegexDemo {
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		//regex是合法邮箱的正则表达式。
		// 其中"\\w"是正则表达式的元字符;"+"、"*"和"{2,3}"是正则表达式的限定修饰符。
		String regex = "\\w+@\\w+(\\.\\w{2,3})*\\.\\w{2,3}";
		
		String str1 = "captain@126.com";
		String str2 = "captain@126";
		String str3 = "126.com";
		
		//String类对象的matches方法用于字符串对象与正则表达式的匹配,返回值为boolean类型。
		if(str1.matches(regex))
			System.out.println(str1+"是一个合法的邮箱地址!");
		if(str2.matches(regex))
			System.out.println(str2+"是一个合法的邮箱地址!");
		if(str3.matches(regex))
			System.out.println(str3+"是一个合法的邮箱地址!");
	}

}

(2)匹配操作示例2
package captain;

//该程序利用正则表达式来判断字符串text是否为合法的手机号。
public class RegexDemo2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		/*regex是合法手机号的正则表达式。
		 *其中方括号内为可选数字字符的范围,\\d是表示0-9任意一个数字的正则表达式元字符,
		 * {9}表示其限定修饰的字符出现且仅出现9次。
		 * */
		String regex = "1[3458]\\d{9}";
		
		String str1 = "12345678900";
		String str2 = "2222222222";
		String str3 = "153dhasdda";
		String str4 = "15110101010";
		
		//String类对象的matches方法用于字符串对象与正则表达式的匹配,返回值为boolean类型。
		if(str1.matches(regex))//
			System.out.println(str1+"是一个合法的手机号。");
		if(str2.matches(regex))
			System.out.println(str2+"是一个合法的手机号。");
		if(str3.matches(regex))
			System.out.println(str3+"是一个合法的手机号。");
		if(str4.matches(regex))
			System.out.println(str4+"是一个合法的手机号。");
	}

}
(3)切割操作示例
package captain;

//正则表达式切割字符串演示。
public class RegexDemo3 {

	public static void main(String[] args) {
		
		String str = "zhao  qian sun   li";//定义字符串
		String regex = " +";//定义用于切割指定格式字符串的regex
		String[] strs = str.split(regex);//字符串切割
		
		for(String str1:strs){//遍历输出字符串数组
			System.out.println(str1);
		}

	}

}
(4)替换操作示例
package captain;

//正则表达式用于字符串替换操作演示。
public class RegexDemo4 {

	public static void main(String[] args) {
		
		String str = "I looovvve    youuuu !";//定义字符串
		str = str.replaceAll("(.)\\1+", "$1");//替换
        System.out.println(str);
	}

}
(5)获取操作示例
package captain;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

//正则表达式用于获取所有符合规则的子串操作演示。
//注意要用到java.util.regex包中的两个类:Pattern和Matcher。
public class RegexDemo5 {

	public static void main(String[] args) {
		
		String str = "I love you so much !";
		String regex = "\\b[a-zA-Z]{4}\\b";//定义用于获取所有长度为4的单词的regex
		
		Pattern p = Pattern.compile(regex);//将regex封装成对象
		Matcher m = p.matcher(str);//通过正则对象获取匹配器对象
		
		//通过匹配器对象的find()方法和group()方法获取需要的子序列
		while(m.find()){
			System.out.println(m.group());
		}

	}

}




 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值