??????正则表达式是一种功强大而灵活的文本处理工具。一般来说,正则表达式就是以某种文本的方式来表述字符串,一次你可以说:“如果一个字符串会有这些东西,那么它就是我们要找的东西”。
?????假如我们要找的是一个或多个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
?
?
?
原文:http://zhangwei-david.iteye.com/blog/2213664