正则表达式作为Perl最出众的卖点,已经在Linux平台上广泛的应用,比如命令grep sed等。JDK1.4 在NIO中重要提供了正则表达式引擎的实现。本系列将通过解决问题的方式来深入学习Java正则表达式。
最终我们目标是如何通过正则表达式获取Java代码中方法的个数与属性的个数(当然通过反射是小Case)
(1)如何统计一行中重复单词
如果没有正则表达式,我们只能解析逐个判断了。正则呢?
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
/**
*
* @author vma
*/
public class MatchDuplicateWords {
public static void main(String args[]){
hasDuplicate("Faster pussycat haha haha dd dd haha haha zz zz");
}
public static boolean hasDuplicate(String phrase){
boolean retval=false;
String duplicatePattern ="\\b(\\w+) \\1\\b";
Pattern p = null;
try{
p = Pattern.compile(duplicatePattern);
}
catch (PatternSyntaxException pex){
pex.printStackTrace();
System.exit(0);
}
//count the number of matches.
int matches = 0;
//get the matcher
Matcher m = p.matcher(phrase);
String val=null;
//find all matching Strings
while (m.find()){
retval = true;
val = ":" + m.group() +":";
System.out.println(val);
matches++;
}
//prepare a message indicating success or failure
String msg = " NO MATCH: pattern:" + phrase
+ "\r\n regex: "
+ duplicatePattern;
if (retval){
msg = " MATCH : pattern:" + phrase
+ "\r\n regex: "
+ duplicatePattern;
}
System.out.println(msg +"\r\n");
return retval;
}
}