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