正则表达式

1、定义

  • 正则表达式是对字符串操做的一种逻辑公式,通常使用正则表达式对字符串进行匹配和过滤
  • 正则表达式由普通字符和元字符组成
  • 优势:灵活,功能性强,逻辑性强
  • 缺点:上手难,一旦上手,会爱上这个东西
  • 工具:各大文本编辑器通常都有正则匹配功能。在线测试网址:http://tool.chinaz.com/regex/

2、普通字符

    普通字符包含大小写字母、数字。在匹配普通字符时直接写就好。好比"abc"匹配的就是”abc”python

3、元字符

1. 字符组

    用[ ]括起来,在[ ]中出现的内容会被匹配。例如:[abc]匹配a或b或c正则表达式

  • [a-z]:匹配a到z之间的一个字母
  • [0-9]:匹配全部阿拉伯数字的一个
  • [a-zA-Z0-9]:匹配a-z或A-Z或0-9其中的一个

2. 简单元字符

  • .:匹配换行符之外的任意字符
  • \w:匹配字母或数字或下划线
  • \s:匹配任意的空白符
  • \d:匹配数字
  • \n:匹配一个换行符
  • \t:匹配一个制表符
  • \b:匹配一个单词的结尾
  • ^:匹配字符串的开始
  • $:匹配字符串的结尾
  • \W:匹配非字母或数字或下划线
  • \D:匹配非数字
  • \S:匹配非空白符
  • a|b:匹配字符a或字符b
  • ():匹配括号内的表达式,也表示一个组
  • [...]:匹配字符组中的字符
  • [^...]:匹配除了字符中字符的全部字符

3. 量词

  • *:重复0次或更屡次
  • +:重复一次或更屡次
  • ?:重复0次或一次
  • {n}:重复n次
  • {n, }:重复n次或更屡次
  • {n, m}:重复n到m次

4、贪婪匹配与惰性匹配

1. 贪婪匹配

    量词中的*,+,{}都属于贪婪匹配,就是尽量多的匹配到结果编辑器

str:hello world
reg: h.*
此时匹配的结果:hello world
str:<div>hello</div>
reg:<.*>
此时匹配的结果:<div>hello</div>

 

2. 惰性匹配

    在使用.*后面若是加了"?"则是尽量的少匹配工具

str:hello world
reg:h.*?
此时匹配的结果:h

 

str:<div>hello</div>
reg:<.*?>
此时匹配的结果:
<div>
</div>

 

 5、分组

    在正则中使用()进行分组。测试

    例如要匹配一个相对复杂的身份证号。身份证号分红两种。老的身份证号有15位,而新的身份证号有18位。而且新身份证号结尾多是xspa

正则为:
^([1-9]\d{16}[0-9x]|[1-9]\d{14})$

6、转义

    在正则表达式中,有不少有特殊意义的元字符,好比\n和\s等。若是要在正则中匹配正常的"\n"而不是换行就须要对"\"进行转义。code

    同理,在python中,对于\n,\s等也是有特殊意义的,若是要获得"\n"也须要对"\"进行转义,因此,若是须要匹配字符\n,在正则表达及python表达中须要写成以下表格形式。blog

目标 正则 python
\n \\n \\\\n

表1  "\n"转义字符串

    此时能够利用r"\n"不转义,即上表中python中正则表达可写为:r"\\n"get

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息