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

(正则表达式)java.util.regex包支持

程序员文章站 2024-01-20 17:25:40
...

java.util.regex开发包

虽然大部分的情况下都可以利用String类实现正则的操作,但是也有一些情况需要使用到java.util.regex开发包中提供的正则处理类。

在这个包里面一供定义了两个类:

  • Pattern(正则表达式的编译类)
  • Matcher(正则匹配)

Pattern类提供有正则表达式的编译处理支持:public static Pattern compile(String regex);

同时也提供有字符串拆分操作:public String[] split(CharSequence input);

public static void main(String[] args) {
		String strA = "JASDL;KFJKL;ASJ980)(&*()&*(^SDHFASH";	//要判断的数据
		String regex = "[^a-zA-Z]+";//非字母的一个或以上
		Pattern pat = Pattern.compile(regex);//编译正则表达式
		for (int i = 0; i < pat.split(strA).length; i++) {
			System.out.print(pat.split(strA)[i]+"、");	//将strA拆分
		}
	}

结果:JASDL、KFJKL、ASJ、SDHFASH、

Matcher类,实现了正则匹配的处理类,这个类的对象实例化依靠Pattern类完成:

  • Pattern类提供的方法:public Matcher metcher(CharSequence input);

当获取了Matcher类的对象之后就可以利用该类中的方法进行如下操作:

  • 正则匹配:public boolean matchers();
  • 字符串替换:public String replaceAll(String replacement)
public static void main(String[] args) {
		String strA = "101";	//要判断的数据
		String regex = "\\d+";//数组一个或多个
		Pattern pat = Pattern.compile(regex);//编译正则表达式
		Matcher mat = pat.matcher(strA);//strA是否与正则表达式匹配
		System.out.println(mat.matches());//true
	}

 

如果纯粹以拆分、替换、匹配三种操作为例根本用不到java.util.regex开发包,只依靠String类就都可以实现。但是Matcher类里面提供一种分组的功能,而这种分组的功能是String不具备的。

范例:利用分组功能

 

public static void main(String[] args) {
		//要求取出“#{内容}”标记中的所有内容
		String strA = "INSERT INTO dept(deptno,dname,loc) VALUES (#{depton},#{dname},#{loc})";
		String regex = "#\\{\\w+\\}";	//字母数字下划线
		Pattern pat = Pattern.compile(regex);//编译正则表达式
		Matcher mat = pat.matcher(strA);	//判断是否匹配成功返回Matcher类
		while(mat.find()) {	//是否有匹配成功的内容
			System.out.println(mat.group(0).replaceAll("#|\\{|\\}", ""));//去除符号
		}
	}

depton
dname
loc

java.util.regex开发包如果不是进行一些复杂的处理是很难使用到的,而String类中所提供的只符合珍珠铬的基本操作,匹配为基础操作中最重要的部分。