简单实用的正则表达式

1.什么是正则表达式

定义:一种匹配字符串的规则

模块要经历的两个步骤:

  a:要操作的概念本身,例如time,你只有了解了时间是什么才能去用它

  生活中处处是正则,比如你说高级动物,你会想到人,那猪狗鸡鸭都排除了;

  b:模块导入进行操作

  c:可以定义一个规则:

    来确定某一个字符串是否符合规则

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

  d:正则表达式是一种独立的语法,和Python解释器无关;

2.什么地方用到正则表达式

a:爬虫领域:爬取网页,用正则表达式提取有用的信息;

b;登录注册也的表单验证,web开发

c:自动化开发,日志分析

3.正则表达式都包含什么

a:字符组:[字符组]在一个位c个字符组成的一个字符组;

用字符串中的每一个元素,跟[字符串组]中的元素比较,只要找到相同的就提取出来,提取出来之后

就直接从下一个开始比较,而不是从头开始;

b:字符[0-9](0到9的所有数字) [a-z](所有小写字母) [A-Z](所有大写字母)遵循ascii码

  ***注意当[0-9a-zA-Z]时要注意他们之间Ascii码的值大小,元素要从小到大;

c:元字符:  

元字符 匹配内容
小数点. 匹配字母以外的任意字符
w 匹配字母和数字或下划线
s 匹配所有的空白符(包括换行)
d 匹配所有的数字
D 匹配所有的非数字
S 匹配所有的非空白符(包括换行)
W 匹配f非字母和数字或下划线
 w前边界为w    w后边界为w
匹配一个换行符
匹配一个制表符
a|b 匹配字符a或b(bc|b  不能是b|bc找到一个之后就停了)
^ 匹配字符串的开始
$ 匹配字符串的结尾
[字符组]

匹配字符组的字符

[^字符组] 匹配除了字符组中的字符
() 匹配括号内的表达式,也表示一个组

 

 

 

 

 

 

 

 

 

 

 

 

 

#几个关于元字符的小知识点:

1)[dD]表示全局;所有的字符;

2)字符:  表示字符的前边界 字符后边界,以空白符为界;

3)^只匹配开头,$只匹配结尾,若连起来用,

效果如下:

 

2.量词

量词 用法说明
* 重复多次和更多次
+ 重复一次或更多次
? 重复0次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m}

重复n到m次

 

 

 

量词的一些小应用:1)一个量词只约束前面的一个或一组(括号里面的)字符;

2)元字符加量词?,表示匹配了0次或一次,?表示了匹配这个动作;

3)记忆窍门:?+*(?相当于0到1  +相当于1到无穷  *相当于0到无穷)

3.正则的贪婪匹配和惰性模式

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

例如:d.?(先看元字符有几个,两个就是一次匹配两个字符)

  d.+(这个跟上面的区别就在于,d.+不能是单个数字) 

惰性模式:在量词后面加?代码惰性模式,匹配时会把元字符一直比较,找到了就停下,

而贪婪匹配用的是回溯算法,直接找到最后,然后往回找,找到停下; 

原文地址:https://www.cnblogs.com/0627zhou/p/9433719.html