学习正则表达式笔记(二)

正则匹配的各种模式

1.择一匹配(|)

  择一匹配用管道符号(|),也就是竖线表示。代表可以从多个模式中选择一个,可用于分割正则表达式。例如: ABC | abc 表示即可以匹配 ABC,又可以匹配 abc。

2.匹配任意单个字符

  1. 点号(.)可以匹配除换行符 \n 以外的任意字符,无论是空格,字母,数字,可打印字符、不可打印字符,还是一个符号,使用点号都能够匹配它们。
  2. 在Python中,如果使用模块属性re.S 也就是 re.DOTALL,那么换行符 \n 也可以匹配了。

3.从字符串起始或者结尾或者单词边界匹配

  1. 要匹配字符串的开始位置,可以使用脱字符(^)或者特殊字符 \A 。例如:^start,匹配从start开始。
  2. 要匹配字符串的结束位置,可以使用美元符号($)或者 \Z 。例如:end$,匹配以end结束。
  3. 特殊字符\b 和\B 可以用来匹配字符边界。区别在于\b 用于匹配一个单词的边界,即如果一个模式必须位于单词的起始部分,就不管该单词前面是否有任何字符。同样,\B 将匹配出现在一个单词中间的模式。

  例如:

  •   \bthe,匹配以 the开头的字符串。
  •   \bthe\b,仅仅匹配单词 the。
  •   \Bthe, 任何包含但并不以 the 作为起始的字符串

4.字符集

  使用方括号表示字符集,可以匹配字符集中的任意符号。例如:b[aeiu]t,可以匹配 bat、bet、bit、but。

5.限定范围和否定

  1. 使用 - 连接字符,表示匹配两个字符之间的任意字符。例如: 1-9,A-Z,分别用于表示数值数字、大写字母。
  2. 在方括号中的字符前加 ^,表示否定,不匹配 ^ 之后的字符,例如:[^aeiou],表示一个非元音字符。

6.特殊符号*、+和?

   1. 星号操作符(*)将匹配其左边的正则表达式 出现零次或者多次的情况。

  2.加 号(+)操作符将匹配一次或者多次出现的正则表达式。

  3.问号(?) 操作符将匹配零次或者一次出现的正则表达式。也叫做非贪婪匹配。

7. 使用圆括号指定分组

  一对圆括号可以实现以下任意一个(或者两个)功能:1.对正则表达式进行分组;2.匹配子组。

8.扩展表示法

  扩展表示法时以问号开始(?…)的。通常用于在判断匹配之前提供标记,实现一个前视(或者后视)匹配,或者条件检查。尽管圆括号使用这些符号,但是只有(?P<name>)表述一个分组匹配。所有其他的都没有创建一个分组。

正则表达式模式                  匹配的字符串

(?:\w+\.)*               以句点作为结尾的字符串,例如“google.”、“ twitter.”、“ facebook.”,但是这些匹配不会保存下来 供后续的使用和数据检索。

(?#comment)        此处并不做匹配,只是作为注释。

(?=.com)               如果一个字符串后面跟着“.com”才做匹配操作,并不使用任何目标字符串。

(?!.net)                  如果一个字符串后面不是跟着“.net”才做匹配操作。

(?<=800-)              如果字符串之前为“800-”才做匹配,假定为电话号码,同样,并不使用任何输入字符串。

(?<!192\.168\.)      如果一个字符串之前不是“192.168.”才做匹配操作,假定用于过滤掉一组 C 类 IP 地址。

(?(1)y|x)                如果一个匹配组 1(\1)存在,就与 y匹配;否则,就与 x 匹配。

 

posted @ 2017-08-30 20:10  ZT1994  阅读(260)  评论(0编辑  收藏  举报