1 Star 0 Fork 0

江旭川/笔记

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
正则表达式.py 9.77 KB
一键复制 编辑 原始数据 按行查看 历史
江旭川 提交于 2021-12-14 06:35 . 学习笔记
# https://regex101.com/ 验证正则的网站
# 正则的特殊元字符 . * + ? \ [ ] ^ $ { } | ( )
# 点表示匹配除了换行符之外的所有字符
import re
# content = '苹果是绿色的,橙子是橙色的,香蕉是黄色的,乌鸦是黑色的'
# re.match() 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
# print(re.match('www', 'www.runoob.com').span()) # 在起始位置匹配
# print(re.match('com', 'www.runoob.com')) # 不在起始位置匹配
# re.search() 扫描整个字符串并返回第一个成功的匹配(只返回一个匹配)
# print(re.search('www', 'www.runoob.com').span()) # 在起始位置匹配
# print(re.search('com', 'www.runoob.com').span()) # 不在起始位置匹配
# Python 的 re 模块提供了re.sub用于替换字符串中的匹配项。
# phone = "2004-959-559 # 这是一个国外电话号码"
#
# # 删除字符串中的 Python注释
# print(re.sub(r'#.*','',phone))
#
# # 删除非数字(-)的字符串
# print(re.sub(r'\D','', phone))
# re.compile()函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。
'''简单来说就是产生一个正则的对象,里面的属性是正则匹配的规则,可以通过这个对象调用match()和search()这两个方法
,这两个方法里面的属性是要进行正则的内容'''
# content = 'abc1234567890def'
#
# pattern = re.compile(r'\d+') # 用于匹配至少一个数字
# print(pattern.search(content).group())
#
# m = pattern.match('one12twothree34four', 2, 10) # 从'e'的位置(2,10)开始匹配,没有匹配
# print(m)
#
# m2 = pattern.match('one12twothree34four', 3, 10) # 从'1'的位置(3,10)开始匹配,正好匹配
# print(m2.start())
'''
group([group1, …]) 方法用于获得一个或多个分组匹配的字符串,当要获得整个匹配的子串时,可直接使用 group() 或 group(0);
start([group]) 方法用于获取分组匹配的子串在整个字符串中的起始位置(子串第一个字符的索引),参数默认值为 0;
end([group]) 方法用于获取分组匹配的子串在整个字符串中的结束位置(子串最后一个字符的索引+1),参数默认值为 0;
span([group]) 方法返回 (start(group), end(group))
'''
# findall()在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。
# 注意: match 和 search 是匹配一次 findall 匹配所有。
# obj = re.compile(r'\d+')
# content = '123456abc7890'
# result = obj.findall(content)
# content2 = 'abcasdkjkals789'
# result2 = obj.findall(content2)
# print(result)
# print(result2)
# re.finditer(),和 findall 类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。
# it = re.finditer(r"\d+","12a32bc43jf3") # 匹配至少一个数字
# for item in it:
# print(item.group())
# re.split()方法按照能够匹配的子串将字符串分割后返回列表,它的使用形式如下
# result = re.split(r'\D+','123 123 456')
# print(result)
# 用正则表达式求非负整数
# a = re.compile(r'-\d')
#
# num = input('请输入一个数:')
# if a.findall(num):
# print('这个数是负数')
# else:
# print('这个数不是负数')
# content = '''苹果是绿色的
# 橙子是橙色的
# 香蕉是黄色的
# 乌鸦是黑色的'''
#
# a = re.compile(r'.色')
# result = a.findall(content)
#
# # 把列表里的元素遍历出来
# for item in result:
# print(item)
# content = '''
# 绿色的
# 绿色色色色色色的
# 绿
# '''
# a = re.compile(r'绿色*')
# result = a.findall(content)
# for item in result:
# print(item)
# + 表示匹配前面的子表达式一次或多次,不包括0次,它与*号不同的是*号是可以包括0次的。
# content = '''
# 绿色的
# 绿色色色色色色的
# 绿
# '''
#
# a = re.compile(r'绿色+')
# result = a.findall(content)
# for item in result:
# print(item)
# content = '''
# 绿色的
# 绿色色色色色色的
# 绿
# '''
# a = re.compile(r'绿色?')
# result = a.findall(content)
# for item in result:
# print(item)
# content = '''
# 绿色的
# 绿色色色色色色的
# 绿色色色色
# 绿色色色
# '''
# a = re.compile(r'绿色{3,}')
# result = a.findall(content)
# for item in result:
# print(item)
# content = '<html><head><title>Title</title>'
# a = re.compile(r'<.*?>')
# result = a.findall(content)
#
# for item in result:
# print(item)
# content = '''
# adj 11111111111
# abc 123abc11113
# cde 11932213131
# kbc kn123123131
# '''
#
# a = re.compile(r'1\d{10}') # 指定匹配的规则是匹配电话号码
# result = a.findall(content)
#
# print('content中符合电话号码的规则的是')
# for item in result:
#
# print(item)
# content = '''010-苹果 6元
# 020-香蕉 7元
# 030-西瓜 8元
# 040-哈密瓜 9元
# '''
#
# a = re.compile(r'\d元$',re.M)
# result = a.findall(content)
# for item in result:
# print(item)
# content = '''
# 红色橙色
# 绿色橙色
# '''
# a = re.compile(r'红|橙')
# result = a.findall(content)
# for item in result:
# print(item)
# content = '''
# 草莓,草莓是红色的
# 香蕉,香蕉是黄色的
# 西瓜,西瓜是绿色的
# '''
#
# a = re.compile(r'(.*),(.*)是')
# result = a.findall(content)
#
# for item in result:
# print(item)
# a = re.compile(r'^(.*),',re.M)
# result = a.findall(content)
# for item in result:
# print(item)
# content = '''张三,手机号码15945678901
# 李四,手机号码13945677701
# 王二,手机号码13845666901'''
#
# a = re.compile(r'(?P<name>.*),.*码(?P<phone>\d+)')
# result = a.finditer(content) # 使用迭代器进行匹配
#
# for item in result:
# print(item.group('name'))
# print(item.group('phone'))
# content = '''
# # <div class="el">
# # <p class="t1">
# # <span>
# # <a>Python开发工程师</a>
# # </span>
# # </p>
# # <span class="t2">南京</span>
# # <span class="t3">1.5-2万/月</span>
# # </div>
# # <div class="el">
# # <p class="t1">
# # <span>
# # <a>java开发工程师</a>
# # </span>
# # </p>
# # <span class="t2">苏州</span>
# # <span class="t3">1.5-2/月</span>
# # </div>
# # '''
# #
# # a = re.compile(r'<div class="el">.*?<a>(.*?)</a>',re.DOTALL)
# # result = a.findall(content)
# #
# # for item in result:
# # print(item)
# content = '''
# Python3 高级开发工程师 上海互教教育科技有限公司上海-浦东新区2万/月02-18满员
# 测试开发工程师(C++/python) 上海墨鹍数码科技有限公司上海-浦东新区2.5万/每月02-18未满员
# Python3 开发工程师 上海德拓信息技术股份有限公司上海-徐汇区1.3万/每月02-18剩余11人
# 测试开发工程师(Python) 赫里普(上海)信息科技有限公司上海-浦东新区1.1万/每月02-18剩余5人
# '''
#
# a = re.compile(r'[\d.]+万/每?月')
# result = a.findall(content)
# for item in result:
# print(item)
# names = '关羽; 张飞, 赵云,马超, 黄忠 李逵'
# result = re.split(r'[,;\s]\s*',names)
# for item in result:
# print(item)
# content = '''
# <div style='background-image: url(/webr6/img/A.png)'>设置A点</div>
# <div style='background-image: url(/webr6/img/B.png)'>设置B点</div>
# <div style='background-image: url(/webr6/img/C.png)'>取消复读并清除AB点</div>
# </div>
# </div>
# <div style='clear: both;'></div>
# </div>
#
#
# <div id=gg1>
# <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
# <!-- autofit#3 -->
# <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-2378083079360079" data-ad-slot="7500970363" data-ad-format="auto"></ins>
# <script>
# ( adsbygoogle = window.adsbygoogle || [] ).push( {} );
# </script>
# </div>
# <div id="editWin" style="display:none;">
# <div id="editWinBar">
# <div id="barTitle1">编辑区</div>
# <div id="plus" onclick="fontSize(event, 0, 1)">大字</div>
# <div id="minus" onclick="fontSize(event, 0, -1)">小字</div>
# <div id="barTitle3" onclick="editWinForm.reset()">&nbsp;重写&nbsp;</div>
# <div id="barTitle2" onclick="send()">&nbsp;保存&nbsp;</div>
# </div>
# '''
# a = re.compile(r'<script async.*?c="(.*)">')
# result = a.findall(content)
#
# for item in result:
# print(item)
'''
例1:北美地区的电话号
编码方案:电话号码有一个3位数的区号和一位7位数的号码组成(这个7位数有分成 一个3位的局号
和一个4位的路号,局号和路号之间使用连字符分隔) 每位电话号码可以是任意数字,但是区号和局
号的第一位数字不能是0或1.实际书写号码是往往会把区号写在括号里面,或者将区号使用连字符
和后面的局号连接起来。例如:(555)123-1234或555-123-1234,有时候在括号你里面会包含空
格。例如:(555 )123-1234 判断输入的号码是否是北美地区的电话号
'''
re_obj = re.compile(r'^[2-9]{1}\d{2}-[2-9]{1}\d{2}-\d{4}')
while True:
phone = input('请输入北美地区电话号码 >> ')
if re_obj.findall(phone):
print('你输入的号码正确!')
break
else:
print('你输入的号码有误,请重新输入!')
continue
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/jiang-xuchuan/note.git
git@gitee.com:jiang-xuchuan/note.git
jiang-xuchuan
note
笔记
master

搜索帮助

23e8dbc6 1850385 7e0993f3 1850385