人生是一种无法抗拒的前进

正则表达式学习笔记

上一篇 / 下一篇  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)      这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读

TAG: 正则表达式

 

评分:0

我来说两句

日历

« 2024-04-12  
 123456
78910111213
14151617181920
21222324252627
282930    

我的存档

数据统计

  • 访问量: 16399
  • 日志数: 11
  • 图片数: 1
  • 建立时间: 2011-11-01
  • 更新时间: 2011-11-29

RSS订阅

Open Toolbar