转载

08-13 正则表达式基础

08-13 正则表达式基础

正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本,

许多程序设计语言都支持利用正则表达式进行字符串操作,因此正则表达式还是非常强大的,它对于一些文本的处理非常简洁从而能有效缩短代码的长度。

简单的转义字符

普通字符:字母,数字,汉子,下划线以及没有特殊定义的标点符号都是“普通字符”。   
表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的一个字符

简单的转义字符:

/n :代表换行符

/t :代表制表符

// :代表/本身

/^ ......  :代表匹配这字符本身

标准字符集合

标准字符集合:

能够与多种字符匹配的表达式

注意区分大小写,大写是相反的意思

/d :任意一个数字,0~9中的任意一个

/w:任意一个字母或者下划线或者汉字,也就是A~Z,a~z,0~9中的任意一个

/s :包括空格,制表符,换行符等空白符中的任意一个。

.   :小数点可以匹配任意一个字符

自定义字符集合

自定义字符集合:

[ ]方括号匹配方式,能够匹配方括号中任意一个字符

[ab5@]: 匹配方括号中的任意一个字符

[^abc]: 匹配除了abc以外的任意一个字符

[f-k]: 匹配“f”-“k”之间的任意一个字符

[^A-F0-3]: 匹配非A-F和非0-3的任意一个字符

修饰匹配次数的特殊符号

修饰匹配次数的特殊符号

{n}: 表达式重复n次

{m,n}: 表达式至少重复m次,最多重复n次

{m,}: 表达式至少重复m次

?: 匹配表达式0次或者1次,相当于{0,1}

 + : 表达式至少出现1次,相当于{1,}

 *  : 表达式不出现或者出现任意次,相当于{0,}

 匹配次数中的贪婪模式,(匹配字符愈多愈好,默认)

 匹配次数中的非贪婪模式(匹配字符越少越好,修饰匹配次数的特殊符号后再加上一个“?“号)。例子:/d{2,4}?,这样就将模式改为非贪婪

字符边界

字符边界(本组标记匹配的不是字符而是位置,符合某种条件的位置)

^: 与字符串开始的位置匹配(以一行来算)

$: 与字符串结束的地方匹配

java中使用正则表达式示例

public classTestRegex{  
    publicstaticvoidmain(String []args)
    {  
        //Pattern p = Pattern.compile("^//d{4}"); //在java中的反斜杠要用两个前面一个转义,因为/d中的/做反义用
        Pattern p = Pattern.compile("(//d{4})([a-z]{2})");  
        Matcher m = p.matcher("asdfsadfsafd2342314asdfsadf2342asdfsaf");  
          
        System.out.println(m.matches());        //匹配整个目标字符串
        System.out.println(m.find());           //查找字符串
          
        List<String> list = new ArrayList<String>();        //用来存储找到的group
        while(m.find())                     //m.find()找到一个后就去找下一个了
        {  
            System.out.println(m.group());      //group(),group(0)的作用是一样的
            System.out.println(m.group(0));  
            System.out.println(m.group(1));  
            System.out.println(m.group(2));     //如果写3的话会超出范围
            list.add(m.group());  
        }  
          
        String []str = "aa33fdf55cc".split("//d{2}");       //按照两个整数来切分
        String str2 ="asd2dsfdfds".replaceAll("//ds", "**");        //将ds替换掉,生成新的字符串,因为前面是常量不可变
        System.out.println("asdfsdf".matches("//w+"));      //匹配字符串
    }  
}

总结

本文只列出了正则表达式的基本使用方法,能够进行一些基本的处理了, 还有更加高级的语法有兴趣可以点

这里
原文  http://zalezone.cn/2014/08/13/正则表达式基础/
正文到此结束
Loading...