经常使用到正则,没想到都这么熟了有时候还要翻资料,这里小小记录下下。
正则并不难,关键是多练,其实老实来说正则的性能并不是很高,关键是多练。以下要背熟于心,不要给我说用到的时候再百度一下什么的:
| 字符 | 意义 | 
|---|---|
| |转义,匹配有意义字符的本身时使用(一些程序自带转义要多打一个,不解释) | |
| . | 匹配除换行符以外的任意字符 | 
| \w | 匹配字母或数字或下划线或汉字 | 
| \s | 匹配任意的空白符 | 
| \d | 匹配数字 | 
| \b | 匹配单词的开始或结束 | 
| ^ | 匹配字符串的开始 | 
| $ | 匹配字符串的结束 | 
| \W | 匹配任意不是字母,数字,下划线,汉字的字符 | 
| \S | 匹配任意不是空白符的字符 | 
| \D | 匹配任意非数字的字符 | 
| \B | 匹配不是单词开头或结束的位置 | 
| [^x] | 匹配除了x以外的任意字符 | 
| [^abc] | 匹配除了abc这几个字母以外的任意字符 | 
| * | 重复零次或更多次 | 
| + | 重复一次或更多次 | 
| ? | 重复零次或一次 | 
| {n} | 重复n次 | 
| {n,} | 重复n次或更多次 | 
| {n,m} | 重复n到m次 | 
上面只是最最最基本的,最常用的,想用点高级功能可以再去找资料。这里给点示例代码
先是javaScript里面使用正则
//场景1:只需要得到是否匹配,使用test
var result = /MSIE [\w.]+/.test('Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; BTRS124307)');
if(result ){
    alert('ie');
}
else{
    alert('不匹配');
}
//场景2:除了要知道是否匹配,还要提出字符串
var result = /(MSIE) ([\w.]+)/.exec('Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; BTRS124307)');
if(result ){
    console.log(result[1]);
    console.log(result[2]);
}else{
    alert('不匹配');
}
然后是正则在java中使用
public static void main(String [] args){
    String regexp="(MSIE) ([\\w.]+)";
    String teststr="Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; BTRS124307)";
    Pattern pattern = Pattern.compile(regexp);
    Matcher matcher = pattern.matcher(teststr);
    if(matcher.find()){
        System.out.println("匹配到了"+matcher.group(0));
        int length=matcher.groupCount();
        System.out.println("共匹配" + length + "处");
        for(int i=1;i<=length;i++){
            System.out.println("从第 "+i+" 个位置抽取到了"+matcher.group(i));
        }
    }else{
        System.out.println("不匹配");
    }
}
开发正则表达式一般写上去就不管了,过几天再看就感觉不明所以,而且开发时通常都写死在代码里,所以写的时候一定要注释用途,如果可以也要注释具体规。