Python正则表达式

正则表达式是用来匹配和查找字符串的,python正则表达式需先引入re模块,以r引导,接下来介绍其用法。

在以下的学习中,我们要先认识search是re中的函数,函数返回的匹配对象中,span()表示的返回对象的位置。
1.字符“\d”匹配0-9之间一个数值

import re
reg=r"\d"
m=re.search(reg,"abc123abc")
print(m)

结果找到了第一个数值“1”:

<_sre.SRE_Match object;span=(3,4),match='1'>

2.字符“+”重复前面一个匹配字符一次或者多次

import re
reg=r"b\d+"
m=re.search(reg,"a12b123c")
print(m)

结果找到了“b123”:

<_sre.SRE_Match object;span=(3,7),match='b123'>

注意!:r"b\d+"第一个字符要匹配“b”,后面是连续的多个数字,因此是“b123”,假如字符串为a12bbb12c,则匹配“b12”,字符串为a12bbc,则找不到匹配对象。

3.字符“*”重复前一个匹配字符零次或多次

import re
reg=r"ab+"
m=re.search(reg,"acabc")
print(m)
reg=r"ab*"
m=re.search(reg,"acabc")
print(m)

结果:

<_sre.SRE_Match object;span=(2,4),match='ab'>
<_sre.SRE_Match object;span=(0,1),match='a'>

+与**的区别:
“ab+”要求“b“重复一次以上
“ab*”表示“b”可以重复零次

4.字符“?”重复前一个匹配字符零次或一次

import re
reg=r"ab?"
m=re.search(reg,"abbcabc")
print(m)

结果:

<_sre.SRE_Match object;span=(0,2),match='ab'>

5.字符“.”代表任何一个字符,但是没有特别声明时不代表字符“\n”

import re
s="xaxby"
m=re.search(r"a.b",s)
print(m)

结果“.”代表了字符“x”:

<_sre.SRE_Match object;span=(1,4),match='axb'>

6.“|”代表把左右分成两部分(结果可以匹配左边或者是右边的字符)

import re
s="xaabababy"
m=re.search(r"ab|ba",s)
print(m)

结果匹配“ab”或“ba”都可以:

<_sre.SRE_Match object;span=(2,4),match='ab'>

7.特殊字符使用反斜线“\”引导,例如"\r","\n","\t","\"分别表示回车,换行,制表符号与反斜线本身

import re
reg=r"a\nb"
m=re.search(reg,"ca\nbcabc")
print(m)

结果:

<_sre.SRE_Match object;span=(1,4),match='a\nb'>

8.字符"\b"表示单词结尾,单词结尾包括各种空白字符或者字符串结尾

import re
reg=r"car\b"
m=re.search(reg,"The car is black")
print(m)

结果匹配“car”,因为其后面是空格:

<_sre.SRE_Match object;span=(4,7),match='car'>

9.“[]”中的字符表示任选一个,如果字符是ASC||中连续的一组,那么可使用“-”连接,如[0-9]表示0-9其中一个数字,[A-Z]表示A-Z其中一个大写字符,[0-9A-z]表示0-9其中的一个数字或者是A-Z其中一个大写字符

import re
reg=r"x[0-9]y"
m=re.search(reg,"xyx2y")
print(m)

结果:

<_sre.SRE_Match object;span=(2,5),match='x2y'>

10.“^”出现在[]的第一个字符位置,就代表取反

import re
reg=r"x[^ab0-9]y"
m=re.search(reg,"xayx2yxcy")
print(m)

结果:

<_sre.SRE_Match object;span=(6,9),match='xcy'>

11."\s"匹配任何空白字符,等价“[\r\n\x20\t\f\v]”

import re
s="la ba\tbxy"
m=re.search(r"a\sb",s)
print(m)

结果:

<_sre.SRE_Match object;span=(1,4),match='a b'>

12."\w"匹配包括下划线内的单词字符,等价于"[a-zA-Z0-9]"

import re
reg=r"\w+"
m=re.search(reg,"Python is easy")
print(m)

结果:

<_sre.SRE_Match object;span=(0,6),match='Python'>

13."^"匹配字符串的开头位置

import re 
reg=r"^ab"
m=re.search(reg,"cabcab")
print(m)

结果:没有匹配到任何字符,因为"cabcab"虽然有"ab",但不是以"ab"开头

None

14.“$”字符匹配字符串结尾位置

import re
reg=r"ab$"
m=re.search(reg,"abcab")
print(m)

结果匹配最后一个“ab”,而不是第一个“ab"(从位置判断):

<_sre.SRE_Match object;span=(3,5),match='ab'>

15.使用括号(…)可以把(…)看成一个整体,经常与"+"、"*"、"?"等符号连续使用,对(…)部分进行重复

import re
reg=r"(ab)+"
m=re.search(reg,"ababcab")
print(m)

结果匹配"abab",“+”对“ab”进行了重复:

<_sre.SRE_Match object;span=(0,4),match='abab'> 

你可能感兴趣的:(python,python,正则表达式)