429正则表达式

'''
re正则表达式
'''
import re
'''
# #1使用match方法进行匹配操作
# str1='13656782564'
# # 如果数据匹配成功,使用group方法来提取数据  查找字符串中是否包含指定字符
# result=re.findall('9',str1)
#
# print(result)

# # 2查找字符串是否有数值
# str1='abcd3feg'
# # 使用re模块结合正则表达式获取所有数字  \d表示数值
# result = re.findall('\d',str1)
# print(result)

# 获取字符串的非数字字符
str1 = 'abd3bcg!#@$%^'
# 使用re模块结合正则表达式获取所有数字    \D表示非数值
result = re.findall('\D',str1)
print(result)
'''
'''
# python正则表达式查什么

str1='w'
# match只能匹配第一个字符
g = re.match('.', str1)
print(g)
# 如果数据匹配成功,使用group方法来提取数据
print(g.group())
'''
# str2='0abc45defg'
# result=re.match('[0-9]',str2)
# print(result.group())
# ^0-9  匹配0-9之外的任意某个字符 默认匹配一个
# str3 = '$$123456'
# result=re.match('[^0-9]',str3)
# print(result.group())
str4 = '$$123456'
result=re.findall('[^0-9]',str4)
print(result)
print('-----------------')
# \s匹配空白,即   空格,tab键   \S匹配非空白
str6 = '$$123 456'
result=re.findall('\s',str6)
print(result)
str6 = '$$123456'
result=re.findall('\S',str6)
print(result)
print('----------------------')

# \w匹配非特殊字符,即a-z、A-Z、0-9、_     \W  匹配特殊字符,即非字母、非数字、非下划线

str6 = '!_$$123asd456'
result=re.findall('\w',str6)
print(result)


#查多少
'''
\w{6,10}
| *     | 匹配前一个字符出现0次或者无限次,即可有可无(0到多)         |
| +     | 匹配前一个字符出现1次或者无限次,即至少有1次(1到多)        |
| ?     | 匹配前一个字符出现1次或者0次,即要么有1次,要么没有(0或1)  |
| {m}   | 匹配前一个字符出现m次,匹配手机号码\d{11}                    |
| {m,}  | 匹配前一个字符至少出现m次,\\w{3,},代表前面这个字符最少要出现3次,最多可以是无限次 |
| {m,n} | 匹配前一个字符出现从m到n次,\w{6,10},代表前面这个字符出现6到10次 |

| 代码 | 功能                      |
| ---- | ------------------------- |
| .(英文点号) | 匹配任意1个字符(除了\n) |
| [ ]  | 匹配[ ]中列举的某个字符,专业名词 => 字符簇 |
| \[^指定字符] | 匹配除了指定字符以外的其他某个字符,^专业名词 => 托字节 |
| \d   | 匹配数字,即0-9           |
| \D   | 匹配非数字,即不是数字    |
| \s   | 匹配空白,即   空格,tab键               |
| \S   | 匹配非空白                               |
| \w   | 匹配非特殊字符,即a-z、A-Z、0-9、_ |
| \W   | 匹配特殊字符,即非字母、非数字、非下划线 |
'''

print('----------------------------')

str1='123abc'
result=re.match('\d{3}',str1)
print(result.group())

str2='20220429abc.jpg'
result=re.match('.*',str2)
print(result.group())
# 定义一个字符串 匹配1或者10
str3='10'
result=re.match('10?',str3)
print(result.group())

print('---------------------')
#11位手机号
mobile='18654271083'
# ^定义以某个字符开头 意思必须以1开头  $ :定义以某个字符结尾  必须以数值结尾
result=re.match('^1[3456789]\d{9}$',mobile)

if result:
    print('合理手机号')
else:
    print('不合理')

print('---------------------------')

str7='abcdef123ghijklmn'
result1=re.search(r'\d(\d)(\d)',str7)
print(result1.group())
print(result1.group(1))
result2=re.search(r'\d{2}',str7)
print(result2.group())

str8='abcdef11111ghijklmn'
result2=re.search(r'(\d)\1\1',str8)
print(result2.group())


#选择匹配符
str = 'hellojava, hellopython'
result = re.finditer(r'hello(java|python)', str)
if result:
    for i in result:
        print(i.group())
else:
    print('未匹配到任何数据')

'''
# 2、分组别名

| 代码       | 功能                             
| ---------- | ---------------------------
| (?P<name>) | 分组起别名                     
| (?P=name)  | 引用别名为name分组匹配到的字符串 

案例:匹配\<book>\</book>
'''
str1 = '<book></book>'
result = re.search(r'<(?P<mark>\w+)></(?P=mark)>', str1)

print(result.group())




email = '1478670@qq.com, go@126.com, heima123@163.com'
result = re.finditer('\w+@(qq|126|163).com', email)
if result:
    for i in result:
        print(i.group())
else:
    print('未匹配到任何数据')

str1 = 'qq:10567345666'
result = re.split(r':', str1)
if result:
    print(f'{result[0]}号:{result[1]}')
else:
    print('未匹配到任何数据')

# 匹配出<html><h1>www.itcast.cn</h1></html>
str='<html><h1>www.itcast.cn</h1></html>'

result=re.search(r'<(?P<mark>\w+)><(?P<mark2>\w+)>[w]{3}(.)(\w+)(.)(\w+)</(?P=mark2)></(?P=mark)>',str)

if result:
    print(result.group())
else:
    print('未匹配到任何数据')

'''
    flags: 匹配方式:
  - re.I 使匹配对大小写不敏感,I代表Ignore忽略大小写
  - re.S 使 . 匹配包括换行在内的所有字符
  - re.M 多行模式,会影响^,$
    
'''
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值