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

猜你喜欢

转载自wujiu.iteye.com/blog/2213664