正则表达式

字符串与正则表达式

字符串支持正则表达式的方法之一:

  • boolean matches(String regex)
  • 使用给定的正则表达式验证当前字符串是否满足其格式要求,满足则返回true,不满足则返回false
  • 需要注意:
  • 给定的字符串无论是否添加了边界匹配,都是做全匹配验证,所以在这里给定的正则表达式可以不添加^$这两个字符。
  • 正则表达式是一串特定的字符,组成一个“规则字符串”,这个规则字符串是描述文本规则的工具。
  • 正则表达式就是记录文本规则的代码。

举例

package SE01.n1String;

public class Demo04StringMatches {
	public static void main(String[] args) {
//		正则表达式: [abc]	a、b、c中任意一个字符
		System.out.println("a".matches("[abc]"));
		System.out.println("d".matches("[abc]"));
		
//		正则表达式:[^abc]:表示除了abc的任意一个字符
		System.out.println("a".matches("[^abc]"));
		System.out.println("d".matches("[^abc]"));
		System.out.println("java".matches("[^a]"));//只能是一个字符(syso:false)
		System.out.println("中".matches("[^a]"));
		
//		正则表达式:[a-z]:表示a,b,c,d……z中的任意字符
		System.out.println("x".matches("[a-z]"));//T
		System.out.println("x".matches("[a-s]"));//F
		
//		正则表达式:[a-zA-Z0-9]表示a~z,A~Z,0~9中的任意一个字符
		System.out.println("8".matches("[a-zA-Z0-9]"));//T
		
//		正则表达式:[a-z&&[^bc]]表示a~z中除了bc以外的任意一个字符,&&表示“与”
		System.out.println("b".matches("[a-z&&[^bc]]"));//F

//		正则表达式:(/./)任意一个字符
		System.out.println("r".matches("."));//T
		
//		正则表达式:\d:任意一个数字字符,相当于[0-9]
		System.out.println("9".matches("\\d"));//T 需要转义
	
//		正则表达式:\w:单词字符,相当于:[a-zA-Z0-9_]
		System.out.println("_".matches("\\w"));//T

//		正则表达式:\s:空白字符,相当于[\t\n\x0B\f\r]
		System.out.println("\n".matches("\\s"));//T
		
//		正则表达式:\D:非数字字符
		System.out.println("a".matches("\\D"));//T
		
//		正则表达式:\W:非单词字符
		System.out.println("*".matches("\\W"));//T
		
//		正则表达式:\S:非空白字符
		System.out.println("a".matches("\\S"));//T
		
//		X?:表示0个或1个X
		System.out.println("a".matches("a?"));//T 一个或没有a
		
//		X*:表示0个或任意多个X
		System.out.println("aaa".matches("a*"));//T 没有或任意多个a
		
//		X+:表示1个到任意多个
		System.out.println("".matches("a+"));//F
		
//		X{n}:表示n个X
		System.out.println("aa".matches("a{2}"));//T
		
//		X{n,m}:表示n个到m个X
		System.out.println("aaa".matches("a{2,8}"));//T 2-8个之内都可以
		
//		分组:“()”表示可以将一个系列表达式看做一个整体,分组时可以使用“|”表示“或”的关系。
//		例如:表示匹配手机号码前面的区号:+86或0086开头,不定数量的空白字符后,跟11位数字
		System.out.println("0086 11111111111".matches("(\\+86|0086)?\\s?\\d{11}"));
	}
}

正则表达式之分组(split)

方法介绍:
split:可以将字符串按照特定的分隔符拆成字符串数组
方法签名:String []split(String regex)

示例

package SE01.n1String;
import java.util.Arrays;
public class Demo05String_Split {
	public static void main(String[] args) {
//		split:可以将字符串按照特定的分隔符拆成字符串数组
//		String []split(String regex)
		String str="3,.hello,3..hello@hello.com,...33";
//		拆分为按照“,”后跟1~多个“.”拆开的字符串数组
		String []split=str.split(",\\.+");
		System.out.println(Arrays.toString(split));
		//结果:[3, hello,3..hello@hello.com, 33]
	}
}

正则表达式替换字符串内容

String replaceAll(String regex,String replacement)
将字符串中匹配正则表达式的regex的字符串替换成replacement

示例

package SE01.n1String;

public class Demo06String_replaceAll {
	public static void main(String[] args) {
		String str="你是你的谁谁谁,谁是你的你你你";
		System.out.println(str.replaceAll("[谁|你]{3}", "*"));
		//结果:你是你的*,谁是你的*
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值