正则表达式学习笔记

2016-08-11  本文已影响33人  婉卿容若

学习地址

正则表达式30分钟入门教程

个人笔记


一、测试工具



在线测试
Reggy

二、元字符(metacharacter)
  1. \b:单词的开头或者结尾,只匹配一个 位置

  2. .: 匹配除了换行符以外的任意 字符

  3. *: 它代表数量,指定自己前面的内容可以连续重复使用任意次 (0...n) ,以便整个表达式得到匹配

  4. \d: 匹配一个数字(digit)(0/1/2/3...)

  5. \s: 匹配任意的空白字符,包括空格, tab, 换行符,中文全角空格等

  6. \w: 匹配字母或数字或下划线或汉字等

  7. +: 代表数量,指定自己前面的内容可以连续重复使用任意次 (1...n)

  8. ^: 匹配字符串的开始,匹配一个 位置

  9. $: 匹配字符串的结束,匹配一个 位置

  10. {2}: 只能不多不少重复两次

  11. {5,12}: 至少出现5次,至多出现12次

三、字符转义

作用:主要用于查找元字符本身

四、限定符

<h5 align = "center">常用限定符</h5>

代码/语法 说明
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{2} 重复两次
{2,} 重复两次以上
{2,10} 重复2到10次(包含)

五、字符类

[]
For Instance:

六、分枝条件

正则表达式里的分枝条件指的是有几种规则,如果满足其中任意一种规则都应该当成匹配,具体方法是用|把不同的规则分隔开
For Instance:

\d{5}-\d{4}|\d{5}:这个表达式用于匹配美国的邮政编码。美国邮编的规则是5位数字,或者用连字号间隔的9位数字。
之所以要给出这个例子是因为它能说明一个问题:使用分枝条件时,要注意各个条件的顺序。如果你把它改成\d{5}|\d{5}-\d{4}的话,那么就只会匹配5位的邮编(以及9位邮编的前5位)。
原因是 匹配分枝条件时,将会从左到右地测试每个条件,如果满足了某个分枝的话,就不会去再管其它的条件了

七、分组

用小括号来指定子表达式

八、反义

<h5 align = "center">常用的反义代码</h5>

代码/语法 说明
\W 匹配任意不是字母,数字,下划线,汉字的字符
\S 匹配任意不是空白符的字符串
\D 匹配任意非数字的字符
\B 匹配不是单词开头或结尾的位置
[^x] 匹配 x以外的其他字符
[^aeiou] 匹配元音字母以为的任意字符

九、后向引用

使用小括号指定一个子表达式后,匹配这个子表达式的文本(也就是此分组捕获的内容)可以在表达式或其它程序中作进一步的处理。默认情况下,每个分组会自动拥有一个组号,规则是:从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2,以此类推

后向引用用于重复搜索前面某个分组匹配的文本。例如,\1代表分组1匹配的文本。难以理解?请看示例:

十、零度断言

十一、负向零度断言

它只匹配一个位置,并不消费任何字符

十二、注释

小括号的另一种用途是通过语法(?#comment)来包含注释
For Instance:
2[0-4]\d(?#200-249)|25[0-5](?#250-255)|[01]?\d\d?(?#0-199)

十三、贪婪与懒惰

<h5 align = "center">懒惰限定符</h5>

代码/语法 说明
*? 重复零次或更多次,但尽可能少重复
+? 重复一次或更多次,但尽可能少重复
?? 重复零次或一次,但尽可能少重复
{2}? 重复两次,但尽可能少重复
{2,}? 重复两次以上,但尽可能少重复
{2,10}? 重复2到10次(包含),但尽可能少重复
上一篇 下一篇

猜你喜欢

热点阅读