(正则表达式)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类中所提供的只符合珍珠铬的基本操作,匹配为基础操作中最重要的部分。