实际生活中接触正则表达式比较常见的例如邮箱如何用正则表达式表示,带区号的电话号码又如何用正则表达式去表示,在尝试写出这些语句的正则表达式之前,先了解一些基本的正则表达式如何表示,如一个数字如何表示等。
一、基本正则表达式
符号 | 含义 |
\d | 匹配一个数字 |
\w | 匹配一个字母或者数字 |
\s | 匹配一个空格 |
. | 匹配任意一个字符 |
* | 匹配任意个字符 |
? | 0个或者一个字符 |
+ | 至少一个字符 |
{m} | m个字符 |
{m,n} | m到n个字符 |
^ | 表示必须以什么开头,如^\d表示 必须以数字开头 |
$ | 表示必须以什么结尾,如\d$表示 必须以数字结尾 |
二、根据需要进行简单组合
如果需要精确的匹配,可以利用基础正则表达式进行一定的组合以满足实际需求。
[0-9a-zA-Z\_] | 匹配一个数字、字母或者下划线 同样可以利用*、?、+来实现组合,如[0-9a-zA-Z\_]* |
A|B | 匹配A或者B |
三、python实践正则表达式
通过调用re模块的match()方面,匹配成功返回Match对象,失败返回None,注意在正则表达式前面加r,不然需要考虑python字符串本身的转义。以下的python小demo结果是success。
import re
if re.match(r'^\d+\-\d{2}$','0-12'):
print('success')
else:
print('fail')
通过正则表达式切分字符串,可以灵活地识别连续的多个空格。同样也可以根据自己实际应用需求,对正则表达式进行更改,例如‘,’和空格的混合等。
import re
#常规的切分字符串方法
str='a b c'
res_ori = str.split(' ')
print(res_ori) #['a', 'b', '', '', 'c']
#通过正则表达式的方式切分字符串
res_re = re.split(r'\s+',str)
print(res_re) #['a', 'b', 'c']