经常使用到正则,没想到都这么熟了有时候还要翻资料,这里小小记录下下。
正则并不难,关键是多练,其实老实来说正则的性能并不是很高,关键是多练。以下要背熟于心,不要给我说用到的时候再百度一下什么的:
字符 | 意义 |
---|---|
|转义,匹配有意义字符的本身时使用(一些程序自带转义要多打一个,不解释) | |
. | 匹配除换行符以外的任意字符 |
\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("不匹配");
}
}
开发正则表达式一般写上去就不管了,过几天再看就感觉不明所以,而且开发时通常都写死在代码里,所以写的时候一定要注释用途,如果可以也要注释具体规。