欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java的正则表达式

程序员文章站 2024-02-10 11:11:22
...

含义:就是纪律文本的规则的代码,是一种用于文本匹配的工具,是一个匹配表达式比起通配符?和*,正则表达式更能精确的描述你的需求。

正则表达式只要涉及API中的:java.util.reges包中的Pattern类和Matcher类。


Pattern:java中专门进行正则表达式编译的类(即一个实例就是代表正则表达式本身)

Matcher:通过解释Patter,对字符串序列执行匹配操作的引擎(用来判断是否匹配)

常用的匹配:

1、内容

.    :匹配出换行符以外的任意字符

\w :匹配字母或者数字或下划线(\W匹配其他字符)

\s :匹配任意的空白符

\d  :匹配数字

\b  :匹配单词的开始或者结束

^   :匹配字符串的开始

$   :匹配字符串的结束

2.次数

X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n
X{n,} X,至少 n
X{n,m} X,至少 n 次,但是不超过 m

[]   :中括号表示可选

典型的调用方式是:

 Pattern p = Pattern.compile("a*b");
 Matcher m = p.matcher("aaaaab");
 boolean b = m.matches();

关于正则表达式的测试:

public class Pattern1 {
	@Test
	public void Demo1(){
		//字符串匹配
		String str="011-123456";
		//匹配原则:一个0,加两个数,一个减号,后面是6个数组
		boolean mc=str.matches("0\\d{2}-\\d{6}");
		System.out.println(mc);//true
		str="011-123456789";
		mc=str.matches("0\\d{2}-\\d{6}");
		System.out.println(mc);//false,因为String是一种完全匹配
		str="老干妈";
		//匹配原则:老后面可以接零个或者多个字符。
		mc=str.matches("老.*");
	}
	
	@Test
	public void Demo2(){
		String str="011-123456";
		//Pattern:java中专门进行正则表达式编译的类
		Pattern p=Pattern.compile("0\\d{2}-\\d{6}");
		//Matcher:通过解释Patter,对字符串序列执行匹配操作的引擎(用来判断是否匹配)
		Matcher mc=p.matcher(str);//匹配成功
		//这里和String匹配不一样String是完全匹配而,这里是部分匹配。
	}
	
	@Test
	public void Demo3(){
		String str="1-1112-2223-3334-4445-5556";
		Pattern p=Pattern.compile("\\d-\\d{3}");
		Matcher mc=p.matcher(str);
		String res="";
		while(mc.find()){//find相当于指针
			res=mc.group();
			System.out.println(res);
			/*1-111
			2-222
			3-333
			4-444
			5-555*/
		}
		//也可以指定位置
		mc.find(2);
	    res=mc.group();
	    System.out.println(res);//2-222
		
	}
}




相关标签: 正则表达式