码迷,mamicode.com
首页 > 其他好文 > 详细

正则有那么难吗?

时间:2014-11-04 11:15:25      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:ar   os   使用   java   sp   代码   bs   ad   as   

1、常规模式

\d 数字字符[0-9]                  \D  非数字[^0-9]

\s 空白字符[ \t\n\x0B\f\r]      \S  非空白[^\s]

\w 单词字符[a-zA-Z_0-9]      \W  非单词[^\w]

|  同时匹配多个模式

2、贪婪模式

greedy(贪心的;渴望的;贪婪的)与reluctant(勉强的;厌恶的;非贪婪)

3、条件模式

(?=X)   zero-width非捕获  positive肯定的  lookahead 先行

(?!X)     zero-width非捕获 negative否认的  lookahead 先行

(?<=X) zero-width非捕获  positive肯定的  lookbehind追溯

(?<!X)  zero-width非捕获  negative否认的  lookbehind追溯

模式前后加条件,肯定模式表示匹配某个正则,否定模式表示不匹配某个正则,先行表示欲匹配正则右侧条件,追溯表示欲匹配正则左侧条件。

理解以下代码后再看jdk的Pattern类帮助,应该就比较全面了。

public static void m(String pattern)
{
    String str = "h2do@e4say.com.cn";//所有正则使用同一个字符串测试
    System.out.println(str + "匹配正则" + pattern + "的结果:");
    
    Pattern p = Pattern.compile(pattern);
    Matcher m = p.matcher(str);
    int i = 1;//匹配结果序号
    while(m.find()){
        System.out.println(i++ + ") " + m.group());
    }
}

public static void main(String[] args) throws Throwable
{
    //字母开头,24个以内的单词字符,@后面24个以内的单词字符,以.com或.net结尾
    m("[a-zA-Z]\\w{3,23}@\\w{1,24}\\.com|[a-zA-Z]\\w{3,23}@\\w{1,24}\\.net");
    //匹配结果:h2do@e4say.com
    
    //贪婪,最大匹配
    m(".+o"); //匹配结果:h2do@e4say.co
    //懒惰,最小匹配
    m(".+?o");//匹配结果:h2do和@e4say.co
    
    //前面是h字符
    m("(?<=h)\\d");//匹配结果:2
    //前面不是h字符
    m("(?<!h)\\d");//匹配结果:4
    //后面是d字符
    m("\\d(?=d)"); //匹配结果:2
    //后面不是d字符
    m("\\d(?!d)"); //匹配结果:4
    //后面不是d字符,并且前面不是h字符
    m("(?<!h)\\d(?!d)"); //匹配结果:4
    
}

h2do@e4say.com.cn匹配正则[a-zA-Z]\w{3,23}@\w{1,24}\.com|[a-zA-Z]\w{3,23}@\w{1,24}\.net的结果:

1) h2do@e4say.com

h2do@e4say.com.cn匹配正则.+o的结果:

1) h2do@e4say.co

h2do@e4say.com.cn匹配正则.+?o的结果:

1) h2do

2) @e4say.co

h2do@e4say.com.cn匹配正则(?<=h)\d的结果:

1) 2

h2do@e4say.com.cn匹配正则(?<!h)\d的结果:

1) 4

h2do@e4say.com.cn匹配正则\d(?=d)的结果:

1) 2

h2do@e4say.com.cn匹配正则\d(?!d)的结果:

1) 4

h2do@e4say.com.cn匹配正则(?<!h)\d(?!d)的结果:

1) 4


正则有那么难吗?

标签:ar   os   使用   java   sp   代码   bs   ad   as   

原文地址:http://my.oschina.net/h2do/blog/340393

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!