加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

re正则

发布时间:2020-12-14 05:51:01 所属栏目:百科 来源:网络整理
导读:# 转义字符和原生字符 import re ## # 转义 # text = ‘apple price is $299‘ # ret = re.search(‘$d+‘,text) # print(ret.group()) # # 原生字符串 text = ‘ c ‘ ret = re.match( ‘ \c ‘ ,text) print (ret.group()) # group 分组 text = " ap
#转义字符和原生字符

import re
#
# # 转义
# text = ‘apple price is $299‘
# ret = re.search(‘$d+‘,text)
# print(ret.group())
#

# 原生字符串
text = c
ret = re.match(\c,text)

print(ret.group())

# group 分组
text = "apple‘s price is $100,oriange‘s price is $22"
ret = re.search(.*($d+).*($d+),text)
print(ret.group(2))
print(ret.groups())


# sub 替换
html  = ‘‘‘
<div class="job-detail">
        <p>工作职责</p>
<p>1.通过模拟请求将人工复杂操作转变为自动化操作</p>
<p>2.将自动化操作融入整套系统</p>
<p>3.获取业务所需数据</p>
<p>职位要求<br></p>
<p>1.一年以上 Python 开发经验</p>
<p>2.精通网络编程、熟悉 HTTP 协议</p>
<p>3.熟悉 HTML、XPath、CSS、JavaScript</p>
<p>4.熟悉正则表达式,从结构化的和非结构化的数据中获取信息</p>
<p>5.拥有良好的编码习惯,结构清晰,命名规范,逻辑性强,认同单元测试</p>
<p>6.善于思考,能独立分析和解决问题</p>
<p>7.责任心强,具备良好的团队合作精神</p>
<p>8.熟练使用 Git,熟悉 Pull Request 工作流</p>
<p>9.如果您有 Blog、GitHub、Stack Overflow、微博、Twitter 帐号,强烈建议您附注在简历中</p>
        </div>
‘‘‘
ret = re.sub(<.*?>,"",html) # 只要标签之间的文字
print(ret)


# split 分割
text = hello world&ni hao
ret= re.split([^a-zA-Z],text)
print(ret)


# compile

?

# 单个字符的匹配
import re

# 匹配某个字符串  如果是 ahello 就不会匹配到了
# match从开头匹配 所以ahello 就匹配不到
# text = "hello"
# ret = re.match(‘he‘,text)
# print(ret.group())


# 点 . 表示匹配任意的字符 .只能匹配一个字符
# . 不能匹配n  换行符
# text = "hello"
# ret = re.match(‘.‘,text) #只拿到h
# print(ret.group())


# d 匹配任意数字
# text = "1234"
# ret = re.match(‘d‘,text) #只拿到 1
# print(ret.group())


# D 匹配任意的非数字
# text = "abc"
# ret = re.match(‘D‘,text) #只拿到 a
# print(ret.group())

# s 匹配空白符(n,t,r,空格)
# text = "t"
# ret = re.match(‘s‘,text) #只拿到 1
# print(ret.group())


# w 匹配 a-z A-Z 数字 下滑线
# text = "_aA"
# ret = re.match(‘w‘,text) #只拿到 _
# print(ret.group())


# W 跟w 相反


# 组合的方式,只要满足中括号里的字符就可以匹配
# text = "1"
# ret = re.match(‘[1a]‘,text) #只要text是以1或a开头就能匹配到
# print(ret.group())


# text = "0731-8888888abcdef"
# ret = re.match(‘[d-]+‘,text)
# print(ret.group()) #0731-8888888

# text = ‘0123‘
# ret = re.match(‘[0-9]+‘,text)
# print(ret.group())  # 0123


text = abcd0123
ret = re.match([^0-9]+,text) # 匹配非 0-9
print(ret.group())

?

# 多个字符的匹配
import re

# * 匹配0 个或者多个字符
# text = ‘abcd‘
# ret = re.match(‘s*‘,text)
# print(ret.group())

# + 匹配一个或者多个
# text = ‘ab+cd‘
# ret = re.match(‘w+‘,text)
# print(ret.group())

# ? 匹配1个或者 0个
# text = ‘abcd‘
# ret = re.match(‘w?‘,text)
# print(ret.group())

# {n}  指定匹配n 个字符
# text = ‘abcd‘
# ret = re.match(‘w{3}‘,text)
# print(ret.group()) #abc


# {m,n} 匹配m-n 个字符
# 以匹配到的最多的为准
# text = ‘abcd‘
# ret = re.match(‘w{1,3}‘,text)
# print(ret.group()) # abc

?

# 小案例练习

import re

‘‘‘
# 验证手机号码: 手机号码以 1 开头,第二位是34578,剩下的9位随意
text = ‘13149133314‘
ret = re.match(‘1[34578]d{9}‘,text)
print(ret.group())


# 验证邮箱: 邮箱规则名称是 数字 字母 下划线 然后是@ 后面是域名
text = "[email?protected]"
ret = re.match(‘[email?protected][a-z0-9]+.[a-z]+‘,text)
print(ret.group())


# url 的匹配
# url规则:前面是http https 后面是 :// 后面是任意非空白字符
# s 匹配空白符(n,空格)
text = ‘https://www.baidu.com/s?wd=python%20selenium&rsv_spt=1&rsv_iqid=0xa4d2655300017277&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&rqlang=cn&tn=baiduhome_pg&rsv_enter=1&inputT=8498&rsv_t=dc42KYvFCf1oL197SvrZ7pGvUGE1hguHcVAhnk9wpNtiOobCOY%2FVykkEjR8gQl%2BzdBag&oq=%25E6%25B7%2598%25E5%25AE%259D&rsv_pq=b63f63a500002a02&rsv_sug3=47&rsv_sug1=42&rsv_sug7=100&rsv_sug2=0&rsv_sug4=9034‘

ret = re.match(‘(http|https|ftp)://[^s]+‘,text)
print(ret.group())


# 验证身份证  总共18位  最后一位可能是小写x或大写X
text = ‘411102198910152116‘
ret = re.match(‘d{17}[dxX]‘,text)
print(ret.group())
‘‘‘


# ^ 一种是在中括号里表示取反  一种是以什么开头
# text = ‘hello‘
# ret = re.match(‘^he‘,text)
# print(ret.group())


# text = ‘hello‘
# ret = re.search(‘ll‘,text)
# print(ret.group())


# $ 以什么结尾
# text = ‘[email?protected]‘
# ret = re.match(‘[email?protected]$‘,text)
# print(ret.group())


# | 表示或  并集
# text = ‘https‘
# ret = re.match(‘(http|https)‘,text)
# print(ret.group())

# 贪婪模式  非贪婪模式


# 匹配0-100 之间的数字
text = 99
ret = re.match([1-9]d?$|100$,text)
print(ret.group())

?

# re中常见的函数

import re

# 分组
# text = "apple‘s price is $99,orange‘s price is $10"
# ret = re.search(‘.*($d+).*($d+)‘,text)
# print(ret.group(2))

# print(ret.groups()) # 提取所有的子分组 (‘$99‘,‘$10‘)


# findall 返回的是列表 找出所有的满足条件的
# print(re.findall(‘$d+‘,text))
# [‘$99‘,‘$10‘]


html = ‘‘‘
<div class="job-detail">
<p>工作职责</p>
<p>1.通过模拟请求将人工复杂操作转变为自动化操作</p>
<p>2.将自动化操作融入整套系统</p>
<p>3.获取业务所需数据</p>
<p>职位要求<br></p>
<p>1.一年以上 Python 开发经验</p>
<p>2.精通网络编程、熟悉 HTTP 协议</p>
<p>3.熟悉 HTML、XPath、CSS、JavaScript</p>
<p>4.熟悉正则表达式,从结构化的和非结构化的数据中获取信息</p>
<p>5.拥有良好的编码习惯,结构清晰,命名规范,逻辑性强,认同单元测试</p>
<p>6.善于思考,能独立分析和解决问题</p>
<p>7.责任心强,具备良好的团队合作精神</p>
<p>8.熟练使用 Git,熟悉 Pull Request 工作流</p>
<p>9.如果您有 Blog、GitHub、Stack Overflow、微博、Twitter 帐号,强烈建议您附注在简历中</p>
        </div>
‘‘‘
ret = re.sub(<.+?>,"",html)
# sub 是替换 用空把标签<>内的内容替换掉
# print(ret) # 拿到所有的文本


# split函数
text = hello world&ni hao
ret = re.split([^a-zA-Z],text)
# print(ret)


# compile 用法
text = this number is 20.500
ret = re.compile(d+.?d*)
ret2 =re.search(ret,text)
print(ret2.group())

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读