python正则表达式


 格式 a=re.match(正则表达式,匹配的内容)

match 以什么开头的字符串   search是搜素连续的数值

基础:

. 匹配任意一个字符 除了、\n

[]匹配【】中的字符

{}想要匹配的个数 匹配首个元素

| 或者 () 分组

量词:

* 匹配一个字符出现的0次或者无限次

+ 匹配一个字符出现的1次或者无限次

? 一次或者零次

{m,n}匹配从m到n次

{m,} 大于等于m

预定义:

\d数字 0-9

\D匹配非数字

\s匹配空白 空格 tab \w a-z A-Z 0-9

\W 非单词字符

\b 边界

^ 匹配以什么开头

$ 以什么结尾

分组:

1、()--》group(i) number name

重名 (?P<name>) (?P=name)

r"\d+"表示匹配连续的多个数值, 字符+表示重复前面一个匹配字符一次或者多次

import re

r = r"ab+"
m = re.search(r,"abcdef")
print(m.group())

 ab

r = r"ab*"
m = re.search(r,"abcdef")
print(m)

 <re.Match object; span=(0, 2), match='ab'>

# +的使用
names = ["laowang","laoli","xiaoming","laoma"]
for name in names:
    ret = re.match('[\w]+[\w]*',name).group()
    print(ret)

 laowang
laoli
xiaoming
laoma

#{m,n}
ret1 = re.match('[\w]{1,5}','12345614').group()
print(ret1)

 12345


#匹配邮箱
hello = '1104344069@qq.com'
ret2 = re.match('[\w]*@qq.com',hello).group()
print(ret2)

 1104344069@qq.com

# msg = "abcd4jkl5iop"
#
# res = re.findall("[a-z][0-9]+[a-z]",msg)
# print(res)

 ['d4j', 'l5i']

# qq号验证问题

qq = '110344069'

res = re.match("^[1-9][0-9]{4,10}$", qq)

print(res.group())

 110344069

# 用户名可以是字母或者数字 不能以数字开头  用户名长度必须在6位以上

# username = 'dsdi123nnnn'
#
# res1 = re.match("^[A-Za-z][\w]{5,}$",username)
#
# print(res1.group())

 dsdi123nnnn

msg = 'a.py b.py ab.py ac.txt'

res2 = re.findall(r'\w*\.py\b', msg)
print(res2)

 ['a.py', 'b.py', 'ab.py']

phone = '029-45861289'

result = re.match(r'(\d{3}|\d{4})-(\d{8})$',phone)
print(phone)
print(result.group(1))
print(result.group(2))

 029-45861289

029
45861289

email1 = "110344069@qq.com"
result = re.match(r'\w{5,10}@(168|126|qq)\.(com|cn)$',email1)
print(result.group())

 110344069@qq.com

#爬取网页
m = '<html><body><div>123<div><body><html>'
result = re.match(r'<([0-9a-zA-Z]+)><([0-9a-zA-Z]+)><([0-9a-zA-Z]+)>(.+)</\3></\2></\1>$',m)

print(result)


版权声明:本文为weixin_60719780原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。