人生是一种无法抗拒的前进
正则表达式学习笔记
上一篇 /
下一篇 2011-11-08 15:29:49
1. \b是正则表达式规定的一个特殊代码,代表着单词的开头或结尾,也就是单词的分界处,如要精确的查找'hi'这个单词,则\bhi\b.\b匹配的是位置而不会匹配到分隔符 2. 0\d\d-\d\d\d\d\d\d\d\d匹配这样的字符串:以0开头,然后是两个数字,然后是一个连字号“-”,最后是8个数字。 为了避免那么多烦人的重复,我们也可以这样写这个表达式:0\d{2}-\d{8}。 这里\d后面的{2}({8})的意思是前面\d必须连续重复匹配2次(8次)。
3. \s匹配任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格等。
4. \w匹配字母或数字或下划线或汉字等
5. \d+匹配1个或更多连续的数字。这里的+是和*类似的元字符,不同的是*匹配重复任意次(可能是0次),而+则匹配重复1次或更多次
6. 5位到12位数字时,可以使用:^\d{5,12}$
7. 转义:\. \* \\
8. 代码/语法 说明
* 重复0次或更多次
+ 重复1次或更多次
? 重复0次或1次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次8. [aeiou]就匹配任何一个英文元音字母,[.?!]匹配标点符号(.或?或!)
9. 如果要匹配(010)88886666,或022-22334455,或02912345678呢?\(?0\d{2}[)-]?\d{8} "(",")"是元字符,要转义
10. 0\d{2}-\d{8}|0\d{3}-\d{7}这个表达式能匹配两种以连字号分隔的电话号码:一种是三位区号,8位本地号(如010-12345678),一种是4位区号,7位本地号(0376-2233445)。
11. \(0\d{2}\)[- ]?\d{8}|0\d{2}[- ]?\d{8}这个表达式匹配3位区号的电话号码,其中区号可以用小括号括起来,也可以不用,区号与本地号间可以用连字号或空格间隔,也可以没有间隔12. \d{5}-\d{4}|\d{5}这个表达式用于匹配美国的邮政编码。美国邮编的规则是5位数字,或者用连字号间隔的9位数字。之所以要给出这个例子是因为它能说明一个问题:使用分枝条件时,要注意各个条件的顺序。如果你把它改成\d{5}|\d{5}-\d{4}的话,那么就只会匹配5位的邮编(以及9位邮编的前5位)。原因是匹配分枝条件时,将会从左到右地测试每个条件,如果满足了某个分枝的话,就不会去再管其它的条件了。 13. ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?) 描述ip地址 用小括号
14. 描述反向匹配的:
常用的反义代码 代码/语法 说明
\W 匹配任意不是字母,数字,下划线,汉字的字符
\S 匹配任意不是空白符的字符
\D 匹配任意非数字的字符
\B 匹配不是单词开头或结束的位置
[^x] 匹配除了x以外的任意字符
[^aeiou] 匹配除了aeiou这几个字母以外的任意字符
15. \b(\w+)\b\s+\1\b可以用来匹配重复的单词,像go go, 或者kitty kitty。这个表达式首先是一个单词,也就是单词开始处和结束处之间的多于一个的字母或数字(\b(\w+)\b),这个单词会被捕获到编号为1的分组中,然后是1个或几个空白符(\s+),最后是分组1中捕获的内容(也就是前面匹配的那个单词)(\1)。
16. 你也可以自己指定子表达式的组名。要指定一个子表达式的组名,请使用这样的语法:(?<Word>\w+)(或者把尖括号换成'也行:(?'Word'\w+)),这样就把\w+的组名指定为Word了。要反向引用这个分组捕获的内容,你可以使用\k<Word>,所以上一个例子也可以写成这样:\b(?<Word>\w+)\b\s+\k<Word>\b
17. 常用分组语法 分类 代码/语法 说明
捕获 (exp) 匹配exp,并捕获文本到自动命名的组里
(?<name>exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)
(?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号
零宽断言 (?=exp) 匹配exp前面的位置
(?<=exp) 匹配exp后面的位置
(?!exp) 匹配后面跟的不是exp的位置
(?<!exp) 匹配前面不是exp的位置
注释 (?#comment) 这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读
相关阅读:
- 经典正则表达式 (houronghui, 2010-2-22)
- Java正则表达式基础 (smile665, 2010-4-19)
- 正则表达式 (buutterfly, 2010-6-02)
- Shell正则表达式基础 (smile665, 2010-10-05)
- PowerShell中的单引号和双引号问题 (omg, 2010-11-02)
- 正则表达式一(转自csdn) (houronghui, 2010-12-02)
- 正则表达式二(转自csdn) (houronghui, 2010-12-02)
- UE正则表达式技巧法则 (houronghui, 2010-12-12)
- 描述编程中使用正则表达式 (iamfeiyu1009, 2011-3-26)
- 《正则表达式》学习笔记 (welcome_zhang, 2011-8-09)
收藏
举报
TAG:
正则表达式