正则表达式

1.正则表达式,又称规则表达式,是一种文本模式,包括普通字符和特殊字符(称为“元字符”),正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式(规则)的文本。

2.字符

\

转义符

^

匹配行首

$

匹配行尾

*

匹配任意次

+

匹配一次或多次(>=1)

?

匹配零次或一次

[a-z]

匹配范围内的任意字符

{n}

匹配确定的n次

{n,}

至少匹配n次

{n,m}

最少n次且最多m次

匹配单个字符

\b

匹配单词边界

\B

匹配非单词边界

\cx

匹配x指明的控制字符

\d

匹配数字字符

\D

匹配非数字字符

\n

匹配换行符

\r

匹配回车符

\s

匹配任何不可见字符

\S

匹配任何可见字符

\t

匹配制表符

\w

匹配任何单词字符

\W

匹配任何非单词字符

|

将匹配条件进行或运算

3.举例

^[0-9]*$:表示只能输入数字。

python正则取非 python 正则判断_python正则取非

^\d{n}$:表示只能输入n位的数字。

python正则取非 python 正则判断_正则表达式_02

^[A-Za-z]+$:只能输入由26个英文字母组成的字符串。

python正则取非 python 正则判断_字符串_03

^[A-Za-z0-9]+$:只能输入由数字和26个英文字母组成的字符串。

python正则取非 python 正则判断_正则表达式_04

断言研究

1.断言分为四种形式:

  • (?=pattern) 正向先行断言
  • (?!pattern) 负向先行断言
  • (?<=pattern) 正向后行断言
  • (?<!pattern) 负向后行断言

注:pattern是一个正则表达式

2.详细介绍

  • (?=pattern)正向先行断言

代表字符串中的位置,位置之后的字符序列可以匹配pattern。

例如:“a regular expression”,要想匹配regular中的re,但不能匹配expression 中的re,可以用re(?=gular).

python正则取非 python 正则判断_python_05

  • (?!pattern)负向先行断言

代表字符串中的位置,位置之后的字符序列不能匹配pattern。

例如:resources expression retirement字符串,匹配re且re后不是s,可以使用re(?!s)。

python正则取非 python 正则判断_python_06

  • (?<=pattern)正向后行断言

代表字符串中的位置,位置之前的字符序列匹配pattern。

例如:匹配字符串中的re,\w表示一个单词字符,可以利用(?<=\w)re。

python正则取非 python 正则判断_正则表达式_07

  • (?<!pattern)负向后行断言

代表字符串中的位置,位置之前的字符序列不能匹配pattern。

例如:匹配字符串中,单词开头是re的,可以用(?<!\w)re。

python正则取非 python 正则判断_字符串_08

注意:1)正向和负向:正向表示匹配括号内的表达式,负向表示不匹配。

2)先行断言,是当扫描指针位于某处时,引擎会尝试匹配指针还未扫过的字符,先于指针到达该字符,故称为先行。后行断言,引擎会尝试匹配指针已扫过的字符,后于指针到达该字符,故称为后行

练习:利用断言实现用户名限制,限制出现大小写,数字,字符16位,首字母大写。

python正则取非 python 正则判断_首字母_09

如果首字母不大写则无法匹配:

python正则取非 python 正则判断_首字母_10