package jakarta_oro;
import org.apache.oro.text.regex.MalformedPatternException;
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;
/**
*@author:jackey
*@descript:正则表达式封装类
*/
public class BaseOro {
private PatternCompiler compiler = null;
private Pattern pattern = null;
private PatternMatcher matcher = null;
private MatchResult results = null;
private String strs="[a-z]*[A-Z]*";
private String nums="[0-9]*";
private String symbol_by_one="([a-z]{1}|[A-Z]{1}|[0-9]{1})";
public BaseOro() {
compiler = new Perl5Compiler();
matcher = new Perl5Matcher();
}
/**
* 判断sourceStr中是否包含通配符patternStr
*/
public boolean contains(String sourceStr, String patternStr)
throws MalformedPatternException {
boolean returnFlag = false;
pattern = compiler.compile(patternStr);
if (matcher.contains(sourceStr, pattern)) {
returnFlag = true;
}
return returnFlag;
}
/**
* 返回sourceStr中查找到的通配符patternStr
*/
public String getContains(String sourceStr, String patternStr) throws MalformedPatternException{
String returnStr=null;
patternStr=this.setUp(patternStr);
pattern = compiler.compile(patternStr);
if (matcher.contains(sourceStr, pattern)) {
results=matcher.getMatch();
//此处只取一个匹配的值
returnStr=results.group(0);
}
return returnStr;
}
/**
* 在sourceStr中用replaceStr替换查找到的patternStr
*/
public String blurReplace(String sourceStr, String patternStr,String replaceStr){
String newStr="";
String beReplaceStr="";
try {
beReplaceStr=this.getContains(sourceStr,patternStr);
newStr=sourceStr.replace(beReplaceStr,replaceStr);
} catch (MalformedPatternException e) {
e.printStackTrace();
}
return newStr;
}
/**
* 将pattern转换成正则表达式识别的语法
* @param pattern
* @return
*/
private String setUp(String pattern){
String str="";
char[] ch=pattern.toCharArray();
for (char c : ch) {
if ('*'==c) {
str=str+strs+nums;
} else if('?'==c) {
str=str+symbol_by_one;
}else{
str=str+c;
}
}
return str;
}
public static void main(String[] args) throws MalformedPatternException {
BaseOro bo = new BaseOro();
System.out.println(bo.blurReplace("bccd278ab", "8?","222"));//模糊替换
System.out.println(bo.getContains("aabbccd","a???c"));//查找
System.out.println(bo.getContains("aabbccd","a*c"));//查找
}
}
分享到:
相关推荐
jakarta-oro-2.0.8 java正则表达式扩展 apache出品
jakarta-oro.jar包供大家享用 博文链接:https://xzio.iteye.com/blog/117213
jakarta-oro.rar 正则表达式包,在使用正常则表达式时依赖的包
Java正则表达式应用-Jakarta-ORO篇,这里详细的统计了正则表达式的在java中的运用,
jakarta-oro-2.0.8 正则表达式 引擎 源代码
Jakarta-ORO是最全面以及优化得最好的正则表达式API之一,Jakarta-ORO库以前叫做OROMatcher,是由Daniel F. Savarese编写,后来他赠给Jakarta Project。... Jakarta-ORO正则表达式库支持Perl5兼容的正则表达式语法。
强大的JAVA正则表达式处理包jakarta-oro
java 正则表达式 perl5规范 jakarta-oro.jar
如果你曾经用过Perl或任何其他内建正则表达式支持的语言,你一定知道用正则表达式处理文本和匹配模式是多么简单。如果你不熟悉这个术语,那么“正则表达式”(Regular Expression)就是一个字符构成的串,它定义了一...
Jakarta-ORO是最全面以及优化得最好的bai正则表达式API之一,duJakarta-ORO库以前叫做zhiOROMatcher,是由Daniel F. Savarese编写,后来他将其赠与daoJakarta Project。是面向JAVA的正则表达式库
Jakarta-ORO是最全面以及优化得最好的正则表达式API之一,Jakarta-ORO库以前叫做...许多源代码开放的正则表达式库都是支持Perl5兼容的正则表达式语法,Jakarta-ORO正则表达式库也不例外,他与Perl 5正则表达式完全兼容
如果你曾经用过Perl或任何其他内建正则表达式支持的语言,你一定知道用正则表达式处理文本和匹配模式是多么简单。如果你不熟悉这个术语,那么“正则表达式”(Regular Expression)就是一个字符构成的串,它定义了一...
如果你曾经用过Perl或任何其他内建正则表达式支持的语言,你一定知道用正则表达式处理文本和匹配模式是多么简单。如果你不熟悉这个术语,那么“正则表达式”(Regular Expression)就是一个字符构成的串,它定义了一...
本文写作时,一个包含了用正则表达式进行文本处理的Java规范需求(Specification Request)已经得到认可,你可以期待在JDK的下一版本中看到它。 然而,如果现在就需要使用正则表达式,又该怎么办呢?你可以从Apache...
包含js正则表达式基础知识、Jakarta-ORO库和一些HTML应用实例
介绍了正则表达式的强大功能。只要正确运用,正则表达式能够在字符串提取和文本修改中起到很大的作用。另外,还介绍了如何在Java程序中通过Jakarta-ORO库利用正则表达式。
如何在Java程序中通过Jakarta-ORO库利用正则表达式调高文字处理效率。