【正则表达式】【第一节】【正则表达式基本知识】

正则表达式是一种文本模式,包括普通字符和特殊字符(称为“元字符”)

普通字符:a-z之间的字母

元字符:

^:^会匹配行或者字符串的起始位置,或者文档的起始位置

$:$会匹配行或者字符串的结尾

被匹配的字符必须是以This开头有空格也不行,必须以Regex结尾,也不能有空格或者其他字符

\b:匹配单词边界,如“This is Regex”匹配单独的单词“is”正则就要写成“\bis\b

\d:匹配数字,0737-5686123,正则:^0\d\d\d-\d\d\d\d\d\d\d

\w”:匹配字母,数字,下划线,如“a2344_yya”,正则为“\w+”,这里的“+”字符为一个量词代表重复的次数

\s”:匹配空格,例如“a b c”正则“\w\s\w\s\w”一个字符后跟一个空格,如有多个空格直接写成“\s+

.”:匹配除了换行符以外的任何字符

注意:

*表示任意个字符(包括0个)

+表示至少一个字符

?表示0个或1个字符

{n}表示n个字符

{n,}表示重复n次或更多次

{n,m}b表示nm个字符

通过在 *+ 或 ? 限定符之后放置 ?,该表达式从"贪婪"表达式转换为"非贪婪"表达式或者最小匹配

\d{3}\s+\d{3,8}

\d{3}匹配3个数字,例如“010

\s匹配一个空格,\s+表示至少有一个空格,例如“ ”

\d{3,8}表示3-8个数字,例如“122222

-”是特殊字符,在正则表达式中,要用“\”转义,“000-12345”的正则是“\d{3}\-\d{3-8}

正则进阶

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

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

[a-zA-Z\_][0-9a-zA-Z\_]*表示匹配由字母或者下划线开头,后接任意个由一个数字、字母或者下划线组成的字符串

A|B 可以匹配A或者B,所以(p|Python可以匹配“python”或者“Python

由于Python中的字符串本身也用\转义,因此强烈建议使用Pythonr前缀,就不用考虑转义问题啦

正则表达式的匹配方法

test=“用户输入的字符串”
if re.match(r“正则表达式”,test):
    Print(“OK”)
else:
    Print(“failed”)

正则表达式的用途

1.re.match进行判断

test="010-11112abc 123"
base=r"\d{3}\-\d{3,8}\w{3}\s\d{3}"
if re.match(base,test):
     print("OK")
else:
     print("Failed")

2.re.split切割字符串

传统方法切割字符

value=("a  b    c").split(" ")

print(value)    #['a', '', 'b', '', '', '', 'c']

如上所示,不能自动识别空格

使用re.split方法

value=re.split(r"[\s\,]+","a,b c")

print(value)    #将以一个空格或“,”号的分开,输出list格式

posted @ 2020-05-08 17:00  小黄鱼的圈子  阅读(274)  评论(0编辑  收藏  举报