import org.apache.oro.text.regex.MatchResult;
import org.apache.oro.text.regex.Pattern;
import org.apache.oro.text.regex.PatternCompiler;
import org.apache.oro.text.regex.PatternMatcher;
import org.apache.oro.text.regex.Perl5Compiler;
import org.apache.oro.text.regex.Perl5Matcher;
/*
boolean matches(String input, Pattern pattern):当输入字符串和正则表达式要精确匹配时使用。换句话说,正则表达式必须完整地描述输入字符串。
boolean matchesPrefix(String input, Pattern pattern):当正则表达式匹配输入字符串起始部分时使用。(例如正则表达式abc 匹配abc1或abc2)
boolean contains(String input, Pattern pattern):当正则表达式要匹配输入字符串的一部分时使用(即,它必须是一个子串)。
另外,在上面三个方法调用中,你还可以用PatternMatcherInput对象作为参数替代String对象;这时,你可以从字符串中最后一次匹配的位置开始继续进行匹配。当字符串可能有多个子串匹配给定的正则表达式时,用PatternMatcherInput对象作为参数就很有用了。用PatternMatcherInput对象作为参数替代String时,上述三个方法的语法如下:
boolean matches(PatternMatcherInput input, Pattern pattern)
boolean matchesPrefix(PatternMatcherInput input, Pattern pattern)
boolean contains(PatternMatcherInput input, Pattern pattern)
*/
public class Pat {
public static void main(String[] args) {
Pattern parttern=null;
PatternCompiler compiler = new Perl5Compiler();
try{
parttern = compiler.compile("(t[aeio]n)//s//d{1,3}//.//d{1,3}//.//d{1,3}//.//d{1,3}",Perl5Compiler.CASE_INSENSITIVE_MASK);
PatternMatcher matcher = new Perl5Matcher();
String input = "ffdstan 172.17.94.105fdsfds";
if (matcher.contains(input, parttern)){
//if (matcher.matches(input, parttern)){
MatchResult result = matcher.getMatch();
System.out.println("true./r/n"+result.group(1));
}else{
System.out.println("false");
}
}catch(Exception ex){
ex.printStackTrace();
}
}
}
運行結果﹕
true.
tan