从Java1.4起,Java核心API就引入了java.util.regex程序包,它是一种有价值的基础工具,可以用于很多类型的文本处理,
如匹配,搜索,提取和分析结构化内容。
java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。它包括两个类:Pattern和
Matcher.
1.全局替换
replacement() 函数,把所有的符合regex的字符替换为目标字符
2.条件替换
appendReplacement()函数件,将符合regex的第×个替换成目标字符
3.条件位置
end()和start()函数,第x个符合regex的字符串起始和结束位置
API说明:
Pattern类的方法简述
方法 说明
static Pettern compile(String regex,int flag)
编译模式,参数regex表示输入的正则表达式,flag表示模式类型(Pattern.CASE_INSENSITIVE 表示不区分大小写)
Matcher match(CharSequence input) 获取匹配器,input时输入的待处理的字符串
static boolean matches(String regex, CharSequence input)
快速的匹配调用,直接根据输入的模式regex匹配input
String[] split(CharSequence input,int limit)
分隔字符串input,limit参数可以限制分隔的次数
Matcher
一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查。首先一个Pattern实例订制了一个所用语法与
PERL的类似的正则表达式经编译后的模式,然后一个Matcher实例在这个给定的Pattern实例的模式控制下进行字符串的匹配工作。
Matcher类的方法简述
方法 说明
boolean matches() 对整个输入字符串进行模式匹配.
boolean lookingAt() 从输入字符串的开始处进行模式匹配
boolean find(int start) 从start处开始匹配模式
int groupCount() 返回匹配后的分组数目
String replaceAll(String replacement) 用给定的replacement全部替代匹配的部分
String repalceFirst(String replacement) 用给定的replacement替代第一次匹配的部分
Matcher appendReplacement(StringBuffer sb,String replacement)
根据模式用replacement替换相应内容,并将匹配的结果添加到sb当前位置之后
StringBuffer appendTail(StringBuffer sb) 将输入序列中匹配之后的末尾字串添加到sb当前位置之后.
一个例子:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String regex = "java";
String s = "head java is very good Java tail";
Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(s);
StringBuffer sb = new StringBuffer();
while (m.find()) {
String t = m.group();
// replace
m.appendReplacement(sb, "C#");
System.out.println("end:" + m.end());
System.out.println("start:" + m.start());
System.out.println("sb:" + sb);
System.out.println("t:" + t);
}
// tail
m.appendTail(sb);
System.out.println(sb);
}
}