【正则表达式】【第一节】【正则表达式基本知识】
正则表达式是一种文本模式,包括普通字符和特殊字符(称为“元字符”)
普通字符: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表示n到m个字符
通过在 *、+ 或 ? 限定符之后放置 ?,该表达式从"贪婪"表达式转换为"非贪婪"表达式或者最小匹配
\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|P)ython可以匹配“python”或者“Python”
由于Python中的字符串本身也用\转义,因此强烈建议使用Python的r前缀,就不用考虑转义问题啦
正则表达式的匹配方法
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格式