python--正则表达式|re模块学习

学习来源:https://www.liaoxuefeng.com/wiki/1016959663602400/1017639890281664

 

正则表达式是一种用来匹配字符串的一种强大的武器,用一种描述性语言给字符串定一个规则,凡是符合规则的字符串,我们就认为匹配了,否则,该字符串就是不合法的。

因为正则表达式也是用字符表示的,所以,我们首先了解如何用字符来描述字符。

在正则表达式中,如果直接给出字符,就是精确匹配,

\d :匹配一个数字;

  ‘009\d’可以匹配‘0098’,无法匹配‘009A’

\w:匹配一个字母或者数字;

  ‘\w\w\d’可以匹配‘py3

. :可以匹配任意字符;

  ‘py.’可以匹配‘py3’,'py@','pyi'

* :匹配任意个字符(包括0个)

+:表示至少一个字符;

:表示0个或者1字符;

{n,m}:表示n-m个字符。

  \d{3}  表示可以匹配3个数字,比如‘012

  \s 可以匹配一个空格(课包括tab等空白符),所以\s+ 表示至少有一个空格,可以匹配‘ ’‘  ’

  \d{3,8}表示3-8个数字,such as :'98765'

以上所得只是可以用正则表达式匹配带空格的带区号的电话号码。

如果带特殊字符,则需要用“\”转义。

进阶:

要做到更精确的匹配,可以用[]来表示范围:

 · [0-9a-zA-Z\_] 可以匹配一个数字、字母或者下划线;

 · [0-9a-zA-Z\_]+ 可以匹配至少由一个数字、字母或者下划线组成的字符串,例如‘009’,‘_0ih’,'45ty';

 · [a-zA-Z\_][0-9a-zA-Z\_]* 可以匹配由字母或者下划线开头,后面接任意个由一个数字、字母或者下划线组成的字符串(python的合法变量);

 · [a-zA-Z\_][0-9a-zA-Z\_]{1,19} 更加确认了该变量的长度(1-20个字符),前面一个字符加上后面最多19个字符组成的字符串。

A|B 可以匹配A或者B ,(p|P)ython 可以匹配python ,也可以匹配Python;

^ 可以表示行数的开头;

^\d 表示必须要以数字开头;

$ 表示行数的结束;

\d$ 表述要以数字结束;

pps:^py$ 变成了整行匹配,只能匹配到py

re模块

python提供re模块,包含了所有正则表达式的功能,由于python 本身也是用\来进行转义,所以要特别注意:

s=‘ABC\\-001’ -->'ABC\-001'

建议使用‘r’前缀,就不用考虑转义的问题了。

s=r‘ABC\\-001’

python--正则表达式|re模块学习_第1张图片

python--正则表达式|re模块学习_第2张图片

 分组:

除了简单的判断是否匹配之外,正则表达式还有提取大量字串的功能,用()表示的就是提取的分组Group.

看例子:

python--正则表达式|re模块学习_第3张图片

注意到group(0)是原始字符串,group(1),group(2)是第一个,第二个子串。

 试着完成了廖雪峰正则下面的两道练习??:

python--正则表达式|re模块学习_第4张图片

 python--正则表达式|re模块学习_第5张图片

???

转载于:https://www.cnblogs.com/clairedandan/p/10925528.html

你可能感兴趣的:(python--正则表达式|re模块学习)