前几天就在着手写本文了。情景是这样的,一个“192.168.0.1”的 IP 地址,按照“.”标志分解成四段,考虑片刻打算以 Jakarta-ORO 实现。
但是写着写着,发现用 String.split(String arg0) 方法也可以实现需求。遂陷入了迷茫,而后转念一想,鸡肋就鸡肋吧,说不定下次会在其他地方用到。
先来看看 String.split(String arg0) 是如何实现的,下面是最想当然的写法:
public class SplitTest {
public static void main( String[] args ){
String ip
= "192.168.0.1";
String[] ips
= ip.split(".");
System.out.println(ips.length);
}
}
嗯,测试以后,控制台打印出“0”,那这样一来 String.split(String arg0) 岂不是不能实现需求咯?且慢,我们如果加上转义符会怎样呢?
public class SplitTest {
public static void main( String[] args ){
String ip
= "192.168.0.1";
String[] ips
= ip.split("\\.");
System.out.println(ips.length);
}
}
这次终于如愿以偿了,控制台打印出“4”。至于为什么会这样,我也没有深入探索,和朋友交流后大概是说“.”在 Java 中有特殊含义,如果要进行正则匹配,就必须转义一下。
转入 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;
public class SplitTest {
public static void main( String[] args ) throws MalformedPatternException{
String ip
= "192.168.0.1";
PatternCompiler pc
= new Perl5Compiler();
PatternMatcher pm
= new Perl5Matcher();
Pattern pattern
= pc
.compile(
"([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})");
pm.contains(ip, pattern);
MatchResult mr
= pm.getMatch();
int ip0 = Integer.parseInt(mr.group(1));
int ip1 = Integer.parseInt(mr.group(2));
int ip2 = Integer.parseInt(mr.group(3));
int ip3 = Integer.parseInt(mr.group(4));
System.out.println(ip0
+" "+ip1+" "+ip2+" "+ip3);
}
}
关于 Jakarta-ORO 更多的信息,网上一搜一大堆,在此就不进行细致的代码解释了。
请注意!引用、转贴本文应注明原作者:Rosen Jiang 以及出处:http://www.blogjava.net/rosen
分享到:
相关推荐
而`jakarta-oro-2.0.8`目录可能包含了完整的源代码、API文档和其他相关资源,如构建脚本和测试用例,这些都是深入学习和调试的重要资料。 总的来说,Jakarta ORO 2.0.8提供了与Perl 5兼容的正则表达式引擎,对于...
而"jakarta-oro-2.0.1"可能是一个包含源码、jar文件和其他资源的目录,供开发者研究和集成到他们的项目中。 总的来说,Jakarta ORO 是Java开发者处理正则表达式的强大工具,它的灵活性和高效性使其成为许多项目的...
压缩包中的"jakarta-oro-2.0.8.jar"是Jakarta ORO库的JAR文件,可以直接引入Java项目中使用。而"commons-net-1.4.1.zip"则是Apache Commons Net库的源代码压缩包,通常用于开发人员查看源代码、调试或自定义库的功能...
使用commons的net包进行ftp链接,commons-net包封装了一些常见的网络包:ftp,smtp,pop3等 相关包:commons-net-1.4.1.jar ; commons-io-1.4.jar;jakarta-oro-2.0.8.jar
jar包,亲测可用
Jakarta-ORO是最全面以及优化得最好的正则表达式API之一,Jakarta-ORO库以前叫做OROMatcher,是由Daniel F. Savarese编写,后来他赠给Jakarta Project。 Jakarta-ORO正则表达式库支持Perl5兼容的正则表达式语法。
"FTP上传下载所需jakarta-oro-2.0.8.jar"这个标题表明,jakarta-oro-2.0.8.jar文件是用于FTP上传或下载过程中的一种依赖。可能的情况是,某个FTP客户端工具或服务器端脚本需要这个库来执行特定的文本处理操作,例如...
`jakarta-oro-2.0.8.jar`则是Jakarta ORO(Oracle Regular Expressions for Java)库,它提供了Perl 5风格的正则表达式支持。虽然在FTP操作中不是必需的,但它在处理字符串时非常有用,比如在解析FTP服务器返回的...
Java正则表达式是Java语言中用于处理文本和模式匹配的重要工具,虽然在早期的Java版本中并未直接内置正则表达式支持,但通过引入第三方库如Jakarta-ORO,开发者可以方便地在Java应用中使用正则表达式。Jakarta-ORO是...
"jakarta-oro-2.0.8.zip" 是该项目的版本2.0.8的压缩包文件,包含了完整的源代码和可能的库文件。 正则表达式(Regular Expression)是一种模式匹配语言,用于在文本中查找、替换或提取特定的字符串模式。Jakarta ...
Jakarta-ORO是最全面以及优化得最好的正则表达式API之一,Jakarta-ORO库以前叫做OROMatcher,是由Daniel F. Savarese编写,后来他将其赠与Jakarta Project,可在Apache.org的网站下载该API包。 许多源代码开放的正则...
在压缩包"jakarta-oro-2.0.8.zip"中,包含了一个名为"jakarta-oro-2.0.8.jar"的文件,这是Jakarta ORO库的二进制版本,可以直接在Java项目中作为依赖使用。另一个文件"www.pudn.com.txt"可能是示例文本或测试用例,...
标题中的"ant-jakarta-oro-1.6.1.jar.zip"是一个压缩文件,它包含的是Jakarta ORO库的1.6.1版本,该库是为Apache Ant项目设计的一个正则表达式处理组件。Apache Ant是一个广泛使用的Java构建工具,类似于Unix的make...
jakarta-oro-2.0.6.jar对Struts的验证框架的mask验证规则所用到的类库
另一方面,`jakarta-oro-2.0.8.jar`是Jakarta ORO库的一个版本,它是Apache的一个正则表达式处理库。在FTP客户端应用中,虽然它不是直接用于文件传输,但可能会用于处理文件名或路径的匹配、过滤等场景。例如,你...
jakarta-oro.jar包供大家享用 博文链接:https://xzio.iteye.com/blog/117213
`jakarta-oro-2.0.8.jar` 是一个正则表达式处理库,由Jakarta项目提供。虽然这个库主要不是为了FTP服务设计的,但它在处理字符串和模式匹配时非常有用,尤其是在解析和验证FTP服务器上的文件路径或者配置信息时。...
Jakarta-ORO是最全面以及优化得最好的bai正则表达式API之一,duJakarta-ORO库以前叫做zhiOROMatcher,是由Daniel F. Savarese编写,后来他将其赠与daoJakarta Project。是面向JAVA的正则表达式库
请下载者看清楚再下载,以免造成不必要的损失 commons-net-1.4.1为org.apache.commons.net下的jar jakarta-oro-2.0.为org.apache.oro.io下的jar pinyin4j-2.5.0为net.sourceforge.pinyin4j下的jar