JAVA正则表达式的简单使用实例源码介绍



JAVA正则表达式的简单使用实例源码介绍。

基本应用:

//生成一个模式
Pattern p = Pattern.compile(“a{1,3}b{1,3}”);
//匹配一个母串
Matcher m = p.matcher(“abdbdaabddfabbc”);
//查找是否匹配,此操作是下列各操作的前提操作,若不进行查找,下列各操作均会出现异常。
Boolean b = m.find()); —-true
int start = matcher.start(); //查找匹配串的起始字母的位置 — 0
int end = matcher.end(); //查找匹配串的结束字母的位置 — 2

Boolean b = m.find()); //查找下一个匹配串 —true

Boolean b = m.matches() //查找是否完全匹配 —-false
Boolean b = m.lookingAt() //查找是否从头匹配 —true
//一个模式可以更换其匹配的母串: m.reset();

可以利用“全部替换”功能将空白符替换为单一空格:

String patternStr = “//s+”;
String replaceStr = ” “;
Pattern pattern = Pattern.compile(patternStr);
Matcher matcher = pattern.matcher(“a b c d”);
return matcher.replaceAll(replaceStr);

高级的替换,每次替换的内容不一样:
Pattern p = Pattern.compile(“a{1,3}b{1,3}”);
Matcher m = p.matcher(“abdbdaabddfabbc”);
StringBuffer sb = new StringBuffer();
boolean f = m.find();
int i = 0;
while(f){
m.appendReplacement(sb, i+”");
i++;
f = m.find();
}
m.appendTail(sb);
System.out.println(sb.toString());
分组匹配:


//一个复杂的正则表达式,可以根据括号来分成若干个组,你在进行匹配的时候,可以使用全部内容进行匹配,
//也可以使用其中的某一个组进行匹配。组的编号从0开始,0表示全部,1表示第一组,2表示第二组……
CharSequence inputStr = “abbabcd”;
String patternStr = “(a(b*))+(c*)”;

// Compile and use regular expression
Pattern pattern = Pattern.compile(patternStr);
Matcher matcher = pattern.matcher(inputStr);
boolean matchFound = matcher.find();

if (matchFound) {
// Get all groups for this match
for (int i=0; i<=matcher.groupCount(); i++) {
String groupStr = matcher.group(i);
}
}
//对于上述例子,共分3组分别是(a(b*))、(b*)、(c*)
//本来第一组应该匹配abb,但是它发现bb和第二组完全匹配,本着互不干涉的原则,
//第一组只能匹配a,这是分组匹配时一个需要注意的地方。
在求子串起始位置和结束位置时需要注意的地方:

matcher.find();
matcher.end(); //是按照整个模式进行匹配后,子串的结束位置

matcher.find();
matcher.grout(1);
matcher.end(); //是按照组1匹配后,子串的结束位置。
在文件输入流中进行匹配,不合要求的不读取:

String filename = “infile.txt”;
String pattern = “pattern”;
BufferedReader rd = new BufferedReader(new FileReader(filename));
rd = new BufferedReader(new RegexReader(rd, pattern));

// Retrieve all lines that match pattern
String line = null;
while ((line = rd.readLine()) != null) {
// line matches the pattern