Java 之正则表达式
??????正则表达式是一种功强大而灵活的文本处理工具。一般来说,正则表达式就是以某种文本的方式来表述字符串,一次你可以说:“如果一个字符串会有这些东西,那么它就是我们要找的东西”。
?????假如我们要找的是一个或多个abc组成的字符串,我们可以这样描述:(abc)+
?????如果有这样一个字符串 :abcabcabcabc,?这个正则表达式又是如何去处理的呢?
???
a ab abc SUCCESS abca abcab abcabc SUCCESS abcabca abcabcab abcabcabc SUCCESS abcabcabca abcabcabcab abcabcabcabc SUCCESS
?
/** * * @author zhangwei_david * @version $Id: RegexDemo.java, v 0.1 2015年5月23日 上午5:03:19 zhangwei_david Exp $ */ public class RegexDemo { /** * * @param args */ public static void main(String[] args) { greedRex(); } private static void greedRex() { String greedRex = "(abc)+"; Pattern pattern = Pattern.compile(greedRex); Matcher matcher = pattern.matcher("abcabcabcabc"); while (matcher.find()) { System.out.println(matcher.group()); } }
?结果是:abcabcabcabc
???勉强性的正则表达式有该如何写呢?且看看(abc)+?这样的正则又是如何处理的呢?
找到第一个字符a,可能匹配,找到字符b可能匹配?找到字符c?匹配?处理结束。这样也就4步就可以处理结束。
一次类推,接着匹配下一个字符
/** * * @author zhangwei_david * @version $Id: RegexDemo.java, v 0.1 2015年5月23日 上午5:03:19 zhangwei_david Exp $ */ public class RegexDemo { /** * * @param args */ public static void main(String[] args) { occupyRex(); } private static void occupyRex() { String greedRex = "(abc)+?"; Pattern pattern = Pattern.compile(greedRex); Matcher matcher = pattern.matcher("abcabcabcabc"); while (matcher.find()) { System.out.println(matcher.group()); } } }
结果是:abc abc abc abc
?
?
?
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。