正则表达式必知必会
正则表达式用处:搜索与替换
简单的开始:
1.匹配单个字符:
.匹配任何一个字符(除去换行符)
加上一个特殊字符:如\,d,w,
2.匹配一组字符:
[]不匹配任何字符,自用来定义一个字符集合;如[ab]:必须匹配a或b,可用来处理大小写问题[Aa],当然也可以用i(SAS里面的);[0-9]匹配0到9的数字,[A-Z]匹配A到Z的英文字母;[A-Za-z0-9]表示A-Z和a-z和0-9;[^0-9]表示不匹配0-9的任意数字;若要匹配[]本身,需要反斜杠[ ]
注:-连字符是特殊的元字符,但只能用在[]之间,在[]之外只能与-匹配,因此-不需要特殊匹配。
3.使用元字符:
元字符不用做元字符时,必须转意,如[、 \
元字符分为两种:(1)匹配文本比如.(2)匹配正则表达式的语法要求的如:[]
匹配空白字符:
:换行符;
回车符; 制表符[Tab键];在Window操作系统中需要
来匹配两条记录中的空白行,在linuxUnix中是
即可
匹配数字:任何一个数字字符相当于[0-9];D任何一个非数字字符相当于[^0-9]
w任何一个字母数字字符或者下划线相当于[A-Za-z0-9_];W任何一个非字母数字字符或者下划线相当于[^A-Za-z0-9_]
匹配空白字符:s任何一个空白;S任何一个非空白字符
匹配十六进制:
匹配八进制: 开头
4.重复匹配
+匹配一个或多个字符
*匹配零个或多个字符
?匹配零个或一个字符
{}匹配的重复次数 如d{0,3}:0,1,2或3个数字;d{3,}至少重复3次及以上的数字字符
注:* +都是贪婪型字符,匹配的结果是多多益善而不是适可而止,尽可能从文本的开头匹配到结尾,有时将多个匹配结果当成一个
但*? +? {n,}?是懒惰性表示方法,写法简单,找到一个匹配的即停止(这里容易误解,见P49页)
5.位置匹配
单词边界:如:the cat scatterted....,匹配cat:cat,这里的是匹配这样一个位置,位于一个能用来构成单词的字符和一个不能用来构成单词的字符;
D不匹配单词的边界
^匹配字符串的开头位置
7.子表达式
()是元字符,将子表达式括起来
简化重复表达:(d{1,3}.){3}
避免误解:19|20d{2} 与(19|20)d{2}意义是不同的;因为|将左右两边当成完整的两部分
子表达式的嵌套
8.回溯引用:前后一致匹配
回溯连续匹配:
如:this is is a cat;
匹配:[ ]+(w+)[]+1
这里的1是模式里的第一个表达式,2表示模式里面的第二个表达式,上述将匹配同一个单词连续两次重复出现;
注:回溯引用只能引用模式里面的子表达式,用()括起来的;