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

?

?

?

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。