首页 > 编程语言 > 详细

Java 之正则表达式

时间:2015-05-24 02:05:26      阅读:249      评论:0      收藏:0      [点我收藏+]

??????正则表达式是一种功强大而灵活的文本处理工具。一般来说,正则表达式就是以某种文本的方式来表述字符串,一次你可以说:“如果一个字符串会有这些东西,那么它就是我们要找的东西”。

?????假如我们要找的是一个或多个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

?

?

?

Java 之正则表达式

原文:http://zhangwei-david.iteye.com/blog/2213664

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!