文章目录

  • 一、是什么
  • 1、元字符
  • 2、限定符
  • 3、自定义字符类别
  • 4、排除字符
  • 5、选择字符 "|"
  • 6、分组
  • 二、在python中应用
  • 1、match
  • 2、search()
  • 3、findall()
  • 4、sub()
  • 5、分割字符串
  • 三、总结


一、是什么

一种描述字符串的规则的表达式。
^\d{8}$表示 八位的号码

1、元字符

其中,$表示匹配字符串的结束;^表示匹配字符串开始;\d匹配数字
这些字符称为元字符(指那些在正则表达式中具有特殊意义的专用字符)
常见元字符:

元字符

说明

.

匹配除换行符以外的任意字符

\w

匹配字母or数字or下划线or汉字

\s

匹配任意的空白字符

\d

匹配数字

\b

匹配单词的开始或结束

^

匹配字符串的开始

$

匹配字符串的结束

^tm匹配以tm为开头的字符串

2、限定符

大概就是对(元)字符进行一些限定或者说修饰。先看下表

限定符

Value

?

匹配前面的字符零次或一次

+

匹配前面的字符一次或多次

*

匹配前面的字符零次或多次

{n}

匹配前面的字符n次

{n,}

匹配前面的字符 >=n次

{n,m}

匹配前面的字符 >=n但<=m次

colou?r表示匹配colourcolor

\d{3}表示\d\d\d

3、自定义字符类别

类似自定义一个元字符,用[]括起来,表示匹配[]内的所有字符
[AEIOU]表示匹配A、E、I、O、U中的任意一个
也可以指定范围,如[A-Z0-9a-z]等同于不考虑汉字的\w

4、排除字符

匹配不符合相应类别的字符串,用[^]表示不符合的类别。
[^eq]表示匹配一个非e也非q的字符

5、选择字符 “|”

该字符可理解成“或”
如要匹配身份证号,身份证号规则是:
十五位数字或十八位数字或十七位数字+X
则对应匹配字符串为
(\d{15}$)|{\d}[17](\d|X)$ "(}“可以限定”|"的范围。

6、分组

()除了限定范围外,还可以分组。
(\.[0-9]{1,3}){3}表示把\.[0-9]{1,3}重复三次。
也就是\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}

二、在python中应用

要用模式字符串。为防止转义,要加上r。(具体也不是很理解,但加上r应该就为问题)
要引用re模块

1、match

re.match(pattern,string[flags])
  • pattern:模式字符串(由正则表达式加上r转换而来)
  • string:表示要匹配的字符串
  • flags:表示标志位。如是否区分大小写。
    作用:在字符串起始位置开始匹配。
    常用标志

标志

说明

A或ASCII(不是LL)

1233213

I

不区分大小写

S

'.'表示匹配所有字符,包括换行符

另外,可以用以下函数调取match的返回值。(若没有匹配到,则返回 None )
注意,None时一个值,不是字符串

函数

说明

start()

表示匹配的字符串的起始位置

end()

表示匹配的字符串的终止位置

span()

表示匹配的字符串的起始位置和终止位置组成的元组

string

表示要匹配的字符串

group

表示匹配到的字符串

m=re.match(r'mr_\w+','MR_SHOP mr_shop',re.I)
print(m.group())

输出

MR_SHOP

注意,若match()返回None,则调用m.group()会报错!

2、search()

搜索第一个匹配到的值,非必须在字符串起始位置。其他与match一样

3、findall()

搜索所有符合匹配的字符串,以列表形式返回符合匹配的那一段字符串。若匹配不到则返回空列表
参数与match相同

m=re.findall(r'mr_\w+','MR_SHOP mr_shop',re.I)
print(m)

输出

[‘MR_SHOP’,‘mr_shop’]

4、sub()

用正则表达式替换字符串

re.sub(pattern,repl,string[,count][,flags])

  • pattern:模式字符串
  • repl:表示替换成的字符串
  • string:表示要被替换的原始字符串
  • count:替换最大次数,默认为0,表示替换所有适配的
  • flags:表示标志位,详见上文标志位表。

5、分割字符串

split(),与之前的split相似。
不过分割的字符由模式字符串指定。
re.split(pattern,string[,maxspit][,flags])

三、总结

有些地方理解的不透彻,标记在书上了,理解之后补上。