python 正则表达式

正则表达式是什么,它的作用?

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


字符组

在同一个位置可能出现的各种字符组成了一个字符组,在正则表达式中用[]表示,字符分为很多类,比如数字、字母、标点等等。假如你现在要求一个位置"只能出现一个数字",
那么这个位置上的字符只能是0、1、2...9这个范围。
例子:
  正则表达式:[0-9] 它可以判断出在要求位置只能出现0-9的数字;

范围表示法:“-”,遵守ascll码表。(请参考ASCLL码表)
  按照习惯写法:[0-9]\[a-z]\[A-Z]

正则
pattern
待匹配字符
string
匹配
结果
说明
[0123456789]
8
True
在一个字符组里枚举合法的所有字符,字符组里的任意一个字符
和"待匹配字符"相同都视为可以匹配
[0123456789]
a
False
由于字符组中没有"a"字符,所以不能匹配
 
[0-9]
 
7
True
也可以用-表示范围,[0-9]就和[0123456789]是一个意思
 
[a-z]
 
s
 
True
 
同样的如果要匹配所有的小写字母,直接用[a-z]就可以表示
 
[A-Z]
 
B
 
True
 
[A-Z]就表示所有的大写字母
 
[0-9a-fA-F]
 
e
 
True
 
可以匹配数字,大小写形式的a~f,用来验证十六进制字符

 

 
在字符组中可以同时并列多个-范围表示法,[0-9a-fA-F]

转义序列来表示一个字符

 

元字符
  在正则表达式中,元字符代表了一套规则,每个元字符所代表了一套规则,下面列了一些较常用的。

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




 

  元字符的转义,有时候只想简单的匹配^、$、|、-这些元字符所以才需要转义,也就是在正则表达式中的元这符之前加上反斜线:\元字符

原生字符串:r"string'  python中取消特殊意义的字符如:\n \t

 

 

 

量词

  所有的量词都要使用在正则规则表达多的后面,量词只约束它前的的正则规则

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

 

非贪婪匹配:量词后面写?问号就代表了非贪婪匹配

如[0-9]{1,2}?代表只匹配一个0-9的数字

分组

对多个字符组的量词的约束

 

问号在python的第三种用途

import re

ret = re.findall('www.(baidu|oldboy).com', 'www.163.com')
print(ret)  # ['163'] 这是因为findall会优先把匹配结果组里内容返回,如果想要匹配结果,取消权限即可 
ret = re.findall('www.(?:baidu|163).com', 'www.163.com
')
print(ret) # ['www.163.com']

 

posted @ 2019-03-31 00:21  取经路上的白龙马C  阅读(92)  评论(0编辑  收藏  举报