正则表达式

正则表达式

正则表达式:是对字符操作的一种逻辑公式,,一般使用正则表达式对字符串进行匹配和过滤
优点:灵活、功能性强、逻辑性强。
缺点:上手难,一旦上手,会得心应手。

元字符:正则表达式的灵魂

1.字符组

字符组很简单就是用[]括起来,在[]中出现的内容会被匹配。

2.简单元字符(常用):匹配一个字符

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

3.量词 :匹配多个字符

* :重复零次或更多次
+ : 重复一次或更多次
?:重复零次或一次
{n}:重复n次
{n,}:重复n次或更多次
{n,m}:重复n次到m次

4.惰性匹配和贪婪匹配

在量词中*,+,{}都属于贪婪匹配,就是尽可能多的匹配到结果。

    str:美丽富饶的沙河欢迎你的到来
    reg:美丽.*
    结果:美丽富饶的沙河欢迎你的到来  
 
在使用.*后面如果加了?则是表示尽可能的少匹配,表示惰性匹配

    str:美丽富饶的沙河欢迎你的到来
    reg:美丽.*?
    结果:美丽

    str: <div>老男孩</div>
    reg: <.*>
    结果:<div>老男孩</div>  
    
    str: <div>老男孩</div>
    reg: <.*?>
    结果:<div>
          </div> 

    str: <div>老男孩</div>
    reg: <(div|/div*)?>
    结果:<div>
          </div>

.*?x的含义比较特殊,找到下个x为止
    str: poiuhgntyxnghjdxdngh
    reg:.*?x
    结果:poiuhgntyx
          nghjdx

5.分组

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

6.转移

在正则表达式中,有很多特殊意义的元字符,比如\n和\s等,如果要在正则中匹配到正常的\n而不是换行符,就需要对"\"进行转移
变成"\\"。在python中,无论是正则表达式,还是待匹配的内容,都是以字符串的形式出现的,在字符串中\也有特殊的含义,
本身还需要转义,所以如果匹配一次"\n",字符串中要写成"\\n",那么在正则中就要写成"\\\\n",相比较比较麻烦。
这是就需要用到转义r"\n"这个概念,此时的正则就是r"\\n"了。
posted @ 2018-10-16 15:08  過去  阅读(118)  评论(0编辑  收藏  举报