python的正则表达式

1.re正则表达式

正则表达式:普通字符和元字符构成的字符串,描述一类字符串规则

match()  从左往右匹配,匹配了就返回结果,如果匹配不上就会None
findall()  匹配上的都会放到列表里面去

1.1元字符

元字符: 匹配单个字符

.   表示任意一个字符,但是除了\n
\d  表示0-9之间任意一个数字 
\D  表示 非数字
\s  表示 空白   \n \t
\S  表示 非空白
\w  表示 英文字母,数字,下划线
\W  和\w相反
# [\d\D]  数字 或者 非数字  =》 任意字符
字符集:同样只能匹配单个字符,使用中括号来表示,表示一个字符范围
import re
# \d 0~9
print(re.match('[0123456789]', 'zc')) # 属于0123456789 都复合
print(re.match('[A-z]', 'zZ'))  # 全体字母
print(re.match('[0-9]', '3A'))  # 匹配 0-9范围内的数字
print(re.match('[^a-e]', 'f'))  #  匹配a-e以外的字符串

1.2数量规则

数量符号
* 匹配前一个字符的任意次数,包括0+ 匹配前一个字符重复匹配1次以上的     >=1
    t = ''
    res = re.match('\w*',t)
    print(res)
    res = re.match('\w+',t)  #
    print(res)
? 匹配前一个字符出现0次或者1{m}    匹配前一个字符的m次数
{m,}   至少匹配m次数以上
{m,n}  至少匹配m次以上,  n次以下


t = '18528322390'
res = re.match('\d*',t)
print(res)
res = re.match('\d+',t)  # 贪婪模式
print(res)
res = re.match('\d?',t)  # 贪婪模式 
print(res)

res = re.match('\d{3,6}',t)
"""
\d\d\d
\d\d\d\d
\d\d\d\d\d
\d\d\d\d\d\d
"""

1.3边界处理

边界就是开始和结尾

^ 开始   ps: 注意这个不是表示取反,取反只在 [] 叫做取反
$ 结束  

# 电话
# 长度是11位
# 第一位 [1]
# 第二位 [358]
# 第三位 [56789]


t = '18528322390'
res = re.match('^[123][358][56789]\d{8}$',t)
print(res)

1.4分组匹配

# 第一种情况 首位是0
# 0[1-9]   01 02 03 04 05 06 07 08 09

# 1[0-2]   10 11 12

或者 |    shift + \
t = "9999-00-14"
print(re.match('\d{4}-(0[1-9]|1[0-2])-\d{2}',t))


() 起到一个分组的作用

res = re.match('(\d{4})-(0[1-9]|1[0-2])-(\d{2})',t)

print(res.group(1))
print(res.group(2))
print(res.group(3))
print(res.groups())

\1  和第一个分组中的内容相同
\2  和第二个分组中的内容相同
xml = "hello"
res = re.match(r'<(\w+)>(.*)', xml)
print(res)



取别名 (?P<名字>)
(?P=名字)
xml = "hello"
res = re.match(r'<(?P\w+)>(.*)', xml)
print(res)

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