Java中的正则表达式与模式匹配研究
摘要 正则表达式是代表具有特殊意义字符的字符串。在信息时代,我们从海量数据中寻特定的信息时,正则表达式起到了至关重要的作用。正则表达式仿佛一个模板,将某个字符模式与所搜索的字符串进行匹配。在编写程序时正则表达式也起着很重要的作用,应用广泛。本文主要研究java中正则表达式的使用,及模式匹配。
关键词 正则表达式;模式匹配;pattern类;matcher
中图分类号tp301.2        文献标识码a        文章编号 1674-6708201148-0180-02
正则表达式仿佛一个模板,将某个字符模式与所搜索的字符串进行匹配。在编写程序时正则表达式也起着很重要的作用,应用广泛。本文主要研究java中正则表达式的使用,及模式匹配。
1 java中的pattern
1.1 重要方法
1static pattern compilestring regex
该静态方法通过使用类名调用,返回一个pattern类型的对象,并且将给定的正则表达式regex编译到模式中。
举例1pattern p ; p=patternpile(“\\dabcd\\d”);
2matcher matchercharsequence input
使用pattern类的对象调用该方法,返回一个matcher类型的对象,其主要作用是用在input中待匹配的字符序列初始化匹配对象。
举例2matcher m;m=p.matcher(“aaa1abcd2bbb”);
3static boolean matchesstring regex,charsequence input
使用类名调用该方法,判断input是否与regex正则表达式匹配。
举例3pattern.matches(“\\dabcd\\d, aaa1abcd2bbb”);
//结果返回 true
4string pattern()
用对象调用,返回在其中编译过此模式的正则表达式。
举例4pattern p = patternpile(“\\dabcd\\d”);
p.pattern();
//结果返回字符串“\\dabcd\\d”。
5string[] splitcharsequence input;
用对象调用该方法,返回一个字符串数组,数组中的每个元素都是input中被该模式对象拆分的字符串。
举例5pattern p = patternpile(“:”);
string arry[]=p.split(“a:bcd:ef”);
//结果:arry[0]=a,arry[1]=bcd,arry[2]=ef”。
2 matcher
主要方法:
1public boolean find()
使用模式对象调用该方法,尝试查与该模式匹配的输入序列的下一个子序列。若到返回true,否则返回false
举例6pattern p=patternpile(“\\dabcd\\d”);
matcher m = p.matcher(“12abcd3fcsd;
if(m.find()){system.out.print(“ok”);}
//m调用find()方法,到与之匹配的子序列“2abcd3”,程序将输出“ok”。
说明:该方法始于匹配器区域的开头,如果该方法的前一次调用成功,并且没有重置,则下一次调用时从上次没有匹配的第一个字符开始。例如在上例中下一次匹配时从字符“f“处向后查。
2public boolean findintstart
使用模式对象调用该方法,该方法重置匹配器,尝试查匹配该模式、从指定索引start处开始的输入序列的下一个子序列。
举例7pattern p=patternpile(“\\dabcd\\d”);
matcher m = p.matcher(“12abcd3fcsd;
ifm.find3)){system.out.print(“ok”);}
//程序结果没有输出“ok“。将从字符”b”处查匹配的子序列。
3public int start()
使用模式对象调用该方法,返回以前匹配的初始索引。
4public int end()
使用模式对象调用该方法,返回最后匹配字符之后的偏移量。
5public string group()
使用模式对象调用该方法,返回由以前匹配操作所匹配的输入子序列。
举例8 pattern p=patternpile(“\\dabcd\\d”);
matcher m = p.matcher(“12abcd3fcsd;
m.find();
system.out.printlnm.start+正则匹配方法”---+m.end()+,+m.group()
//结果1---62abcd3
6public string replaceallstringreplacement
使用模式对象调用该方法,替换模式与给定替换字符串相匹配的输入序列的每个子序列。
举例9pattern p=patternpile(“\\dabcd\\d”);
matcher m = p.matcher(“12abcd3fcsd;
system.out.printm.replaceall(“***”));
//结果:1***fcsd
7public boolean matches()
使用模式对象调用该方法,尝试将整个字符串与模式匹配。若完全匹配返回true,否则返回false
举例10pattern p=patternpile(“\\dabcd\\d”);
matcher m = p.matcher(“1abcd3;
matcher m1 = p.matcher(“2abcd33”);
if(m.matches()) system.out.print(“ok”);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。