正则表达式

Posted amber-liu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式相关的知识,希望对你有一定的参考价值。

1. 正则表达式本身和python没有什么关系,是一种独立的规则,独立的语言,是匹配字符串内容的一种规则

官方定义:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,

这个“规则字符串”用来表达对字符串的一种过滤逻辑。

 

2. 正则表达式是什么?能做什么?

  从大段的文字中找到符合规则的内容

  判断某个字符串是否完全符合规则

3. 元字符

  w 匹配 数字,字母,下划线[a-zA-Z0-9_]

  s 匹配所有空白符 换行符/制表符,空格

      匹配换行符

      匹配制表符

  d 匹配所有数字[0-9]

  W ,D,S 和w,d,s取反  [sS] [dD] [wW]是三组全集 意思是匹配所有字符

   表示单词的边界

  ^ 匹配一个字符串的开始

  $ 匹配一个字符串的结束

  . 匹配出换行符之外的所有字符

  |   a|b 符合a规则的或者符合b规则的都可以被匹配

      将更复杂更长的规则写在前面

  () 分组  表示给几个字符加上量词约束的时候,就给这些字符跟在一个组

  [ ] 字符组

    在同一个位置上可以出现的字符的范围(只要出现在中括号内的内容都可以被匹配)

     [^]     只要不出现在中括号中的内容都可以被匹配

    有一些有特殊意义的元字符进入字符组中会回复它本来的意义 :  .  |  [  ]  ( )

4.量词

  {n} 表示这个量词前面的字符出现n次

  {n,}表示这个量词前面的字符至少出现n次

  {n,m}表示这个量词前面的字符出现n到m次

  ?表示匹配量词前面的字符出现0次或者1次,表示可有可 

  +表示匹配量词前面的字符出现1次或者多次

  *表示匹配量词前面的字符出现0次或者多次

5.正则表达式匹配的特点

  贪婪匹配,他会在允许的范围内取最长的结果

  非贪婪模式/惰性匹配,在量词后面加上?表示取它能取的最少

       .*?x   # 匹配任意非换行符字符任意长度 直到遇到x就停止

 

6练习  正则测试网址http://tool.chinaz.com/regex/

  匹配整数  
  匹配小数
  匹配小数或者整数
  匹配身份证号码 (以非0开头,15位数字或者18位,最后一位可以是x或者数字)

答案:
d+
d+.d+
d+(.d+)?  或者    d+.d+|d+
[1-9]d{16}[dx]|[1-9]d{14}  或者  [1-9]d{14}(d{2}[dx])?




以上是关于正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

markdown 正则表达式模式片段

正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性

循环通过 python 正则表达式匹配

asp.net 使用正则表达式验证包含打开/关闭括号片段的属性字符串

攻破难啃的骨头-正则表达式(转)

正则表达式的贪婪和非贪婪模式