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