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,全称是Oracle Regular Expressions for Java,是由Apache软件基金会开发的一个Java正则表达式库。它是对Java内置的正则表达式功能的扩展,提供了更丰富的功能和更高的性能。Jakarta ORO在Java社区中...
jakarta-oro.jar包供大家享用 博文链接:https://xzio.iteye.com/blog/117213
Jakarta ORO(Oracle Regular Expressions for Java)是Apache软件基金会的一个开源项目,它提供了一个高性能的Java正则表达式引擎。这个项目的主要目标是为Java开发者提供与Perl 5正则表达式语法兼容的库,名为Perl...
Java正则表达式是Java语言中用于处理文本和模式匹配的重要工具,虽然在早期的Java版本中并未直接内置正则表达式支持,但通过引入第三方库如Jakarta-ORO,开发者可以方便地在Java应用中使用正则表达式。Jakarta-ORO是...
Jakarta ORO(Oracle Regular Expressions for Java)是Apache软件基金会的一个开源项目,它提供了一个高性能的Java正则表达式库。这个库是基于Perl 5的正则表达式语法,为Java开发者提供了强大的文本匹配和处理功能...
Jakarta-ORO 库是一个开放的源代码库,提供了正则表达式的实现。使用 Jakarta-ORO API,可以轻松地使用正则表达式进行文本处理。 实践应用 ---------- 正则表达式可以应用于各种领域,例如文本处理、数据提取、...
Jakarta ORO(Oracle Regular Expressions for Java)是Apache软件基金会开发的一个强大的Java正则表达式库,它为开发者提供了更为灵活和高效的正则表达式处理功能。在Java标准库中的java.util.regex包之外,Jakarta...
Jakarta ORO为Java应用程序提供了一个强大的正则表达式处理引擎,它基于Perl 5的正则表达式语法。在Java 1.4及更早版本中,正则表达式功能相对较弱,而Jakarta ORO填补了这一空白,提供了更丰富的匹配和替换功能。...
Jakarta ORO是Apache软件基金会开发的一个开源Java库,它主要提供正则表达式处理功能。这个库在很多Java项目中被广泛使用,特别是在需要文本匹配、搜索和替换的场景下。Jakarta ORO库包含了Perl 5风格的正则表达式...
Jakarta-ORO是最全面以及优化得最好的正则表达式API之一,Jakarta-ORO库以前叫做OROMatcher,是由Daniel F. Savarese编写,后来他赠给Jakarta Project。... Jakarta-ORO正则表达式库支持Perl5兼容的正则表达式语法。
Jakarta ORO,全称是Oracle Regular Expressions for Java,是由Apache软件基金会开发的一个开源项目,主要用于Java平台的正则表达式处理。这个项目在Java社区中被广泛使用,为开发者提供了一套强大的文本匹配和搜索...
Jakarta ORO(Oracle RegEx)库是Apache软件基金会的一个项目,它是一个高性能的Java正则表达式实现,受到了Perl 5正则表达式的启发。在Java中,`java.util.regex`包提供了正则表达式的核心支持,而Jakarta ORO则...
Jakarta ORO,全称是Oracle Regular Expressions for Java,是一个开源项目,它为Java平台提供了强大的正则表达式处理库。Jakarta ORO是Apache软件基金会Jakarta项目的一部分,其版本号为2.0.8,这表明它是经过多次...
Jakarta ORO 提供了一个简单易用的API,使得开发者可以方便地实现这些功能。它包括了一些核心类,如`Pattern`和`Matcher`,这两个类在处理正则表达式时扮演了关键角色。 `Pattern`类允许开发者编译正则表达式模式,...
Jakarta-ORO是最全面以及优化得最好的正则表达式API之一,Jakarta-ORO库以前叫做...许多源代码开放的正则表达式库都是支持Perl5兼容的正则表达式语法,Jakarta-ORO正则表达式库也不例外,他与Perl 5正则表达式完全兼容
标题中的"ant-jakarta-oro-1.6.1.jar.zip"是一个压缩文件,它包含的是Jakarta ORO库的1.6.1版本,该库是为Apache Ant项目设计的一个正则表达式处理组件。Apache Ant是一个广泛使用的Java构建工具,类似于Unix的make...
Jakarta ORO提供了`Pattern`和`Matcher`类,这些类可以帮助开发者构建和执行复杂的正则表达式,以完成数据的提取和验证任务。 关于中文乱码问题,Apache Commons Net的FTP库通常能够正确处理字符编码,避免在与FTP...