正则表达式

正则表达式在线测试的网址:http://tool.chinaz.com/regex

正则表达式

作用:

  1.检测某段字符串是否符合规则

  2.从大段文字中将符合规则的内容匹配出来

ASCII码表:

注:大写字母和小写字母要分开写[A-Za-z],不可以[A-z],因为91-96并非字母

字符组:

  字符组的范围是根据ASCII码表来规定的。

字符组的写法:

[A-Z]  :  大写字母A至大写字母Z

[a-z]  :  小写字母a至小写字母z

[2-9]  :  数字2至9

[a-z0-9]  : 字母a-z数字0-9的都符合

[^A-Z] :  匹配非A-Z的字符

注意:

  1.不能从大到小,例[9-0]

  2.匹配英文字母要[A-Za-z],不能A-z,因为Z到a有6个其他的符号

  3.字符组只代表一个字符,例[A-Z0-9a-z]也只能代表一个字符

元字符:

.   : 表示任意字符,除了换行符

d  :  [0-9]

w  :  [A-Z0-9a-z_]  # 字母数字下划线

  :  匹配回车换行

   :  匹配制表符 Tab

空格  :  匹配所有空格(空白)

s  :   匹配空格、换行符和制表符(Tab)

  :   匹配一个单词的边界

的例子:

abc    # 正则表达式

kjgcabc abcabcbb    #只会匹配到第一个空格前的abc,在一堆字符中间的不会被匹配到

反义词:

D   :  [^0-9]   # 除了数字之外的所有字符

W  :  [^A-Z0-9a-z_]  # 除了字母数字下划线之外的所有字符

S   :  [^ ]   # 除了空格(空白)、换行符和制表符(Tab)之外的所有字符

匹配所有  :   [Dd]或者[Ww]或者[Ss]      # [Dd] 匹配非数字和数字

非字符组 :  [^123]  匹配非1和2和3之外的所有字符

开始符和结束符:

^  :  永远都是写在一个规则的最开始的位置

$  :  永远都是写在一个规则的末尾的位置

注: ^和$也规定了匹配内容的字符串的长度

例子:

判断手机号的:

^[1][3-8]d{9}$     # 1开头,第二位是3-8的任意数字,第三位至第十一位任意数字组合,最后以为是以数字结尾

|  : 或 , 要注意的是 永远要把长的规则放到左侧

()  :  分组

   :  转义,如果是有意义的字符对其进行转义让它成为普通字符,如.(表示任意字符)  . ( 只代表一个点 ),如\n 表示' '

例:

www.(baidu|zezhou).com     #  匹配www.baidu.com或www.zezhou.com,如果不加()分组,是www.baidu或zezhou.com

量词:     #  在量词的范围内尽可能多的匹配

{n}  :  匹配n次  

{n,}   :  匹配至少n次或更多

{n,m}  :  匹配n-m次

?  :  匹配0次或1次

+  :  匹配1次或多次

*  :   匹配0次或多次 

例子:

1.匹配整数

解释:个位或更多位,都不符合匹配是否为0,*这个需要注意,可以有可以没有
^([1-9]d*|0)$ 2.匹配小数 ^(d+.d+)$ 3.匹配整数及小数 ^(d+(.d+)?)$ 4.匹配身份证号 ^([1-9]d{14}(d{2}[dxX])?)$

贪婪匹配:尽可能多的匹配

惰性匹配:尽可能少的匹配

例子:

字符串:'asdfdsfsdxxxxxxbbbb'
a.*x     # asdfdsfsdxxxxxxbbbb      #  贪婪匹配,回溯算法, .* 直接匹配到字符串结尾,遇到x回到最后一个x位置
a.*?x    #  asdfdsfsdx              #  惰性匹配 , 挨个匹配是否下个字符是x,遇到x结束

python得re模块使用:

https://www.cnblogs.com/zezhou/articles/10578732.html

原文地址:https://www.cnblogs.com/zezhou/p/10572546.html