正则表达式

来源:互联网 发布:java如何打war包 编辑:程序博客网 时间:2024/06/06 02:42

正则表达式

正则表达式是灵活而强大的文本处理工具。量词描述了一个模式吸收输入文本的方式:①贪婪型:贪婪表达式会为所有可能的模式发现尽可能多的匹配;②勉强型:匹配满足满足模式所需的最少字符串;③占有性:当正则表达式被应用于字符串时,它会产生相当多的状态,一边在匹配失败时可以回溯,而“占有的”量词并不保存这些中间状态,因此它们可以防止回溯。它们常常用于防止正则表达式失控,因此可以使正则表达式执行起来更有效。

CharSequence是一个接口

              interface CharSequence {

       charAt(int i);

       length();

       subsequence(int  start,int end);

       toString();

}

多数正则表达式操作都接收CharSequence类型的参数。

 

Pattern和Matcher

         导入java.util.regex,然而static Pattern.compile()方法来翻译你的正则表达式即可,它会根据你的String类型的正则表达式生成一个Pattern对象。然后把想要检索的字符串传入Pattern对象的matcher()方法。matcher()方法会生成一个Matcher对象,他的replaceAll()方法能将所有匹配的部分都替换成你传入的参数。

String  s = “khlk”;

Pattern p = Pattern.compile(正则表达式);

Matcher m = p.matcher(s);

While(m.find()) {}

几个方法:

boolean matches();

boolean lookingAt();//判断该字符串的始部分是否能够匹配模式

boolean find();//用来在CharSequence查找多个匹配

boolean find(int start);

find()像迭代器那样前向遍历输入字符串;find(i)接收整数作为参数,该整数表示字符串中字符中的位置,并以其作为搜索的起点。

 

组(Group)

组是用括号划分的正则表达式,可以根据组的编号来引用某个组。

A(B(C))D中三个组:组0是ABCD,组1是BC,组2是C

Matcher对象的方法:

     Public intgroupCount()返回该匹配器中模式中的分组数目(不包括0)

Public  String  group()返回前一次匹配操作的第0组(整个匹配)

Public  String  group(int i)返回前一次匹配操作期间指定的组号,如果匹配成功,但是指定的组没有匹配输入字符串的任何部分,则返回null

Public  intstart(int group)返回在前一次匹配操作中寻找的组的起始索引。

Public  int end(intgroup)返回在前一次匹配操作中寻找的组的最后一个字符索引加1的值。

匹配操作失败之后调用上述最后两个方法将会产生IIIegalStateException。

 

0 0
原创粉丝点击