匹配括号

# 匹配括号里面的内容
https://blog.csdn.net/weixin_43235307/article/details/120219815
# 匹配左括号前的内容
s = "水电费(1000元)1月30日前需要上交"
pat = re.compile(u'.*?(?=\\()')
res = re.match(pat, s)
print(res.group())
# 删除三种括号及里面的内容
text = re.sub(u"\\(.*?\\)|\\{.*?}|\\[.*?]", '', text)
# 匹配"说  明 书"
text = "说  明 书"
text = re.findall(r"说[\s]+明[\s]+书", text)
print(text)

只保留中文、英文和指定标点符号

con = "b0111111;1:cs<=7'b0000110;2:cs<=7'b1011011;endcase//选定一个数码管//在数码管上显示bs的值."
# []中的^有反选的意思,例如^a-z就是除了a-z之外的,在sub中a-z就不会被去除
cop = re.compile("[^\u4e00-\u9fa5^.^a-z^A-Z^0-9_.!+-=——,$%^,。?、~@#¥%……&*《》<>「」{}【】()/\\\[\]'\"]")
subcon = re.sub(cop, "", con)
print(subcon)

字符串的标点符号

# 去除英文标点符号
import string
text = 'adfadf,.,d.,sf.;,we;,f;d,fw;efw;elf;wle,fw;'
enbiaodian = string.punctuation
pat = r"[%s]+" % enbiaodian
res = re.sub(pat, "", text)
print(res)# 去除中文标点符号
# pip install zhon
from zhon.hanzi import punctuation
text = "中文标点: !?。"#$%&'()*+,-/:;<=>@["
zhbiaodian = punctuation
pat = r"[%s]+" % zhbiaodian
res = re.sub(pat, "", text)  # 去除标点符号
print(res)

匹配URL

import re
text = "网址是:https://www.baidu.com,欢迎大家访问"
t1 = re.sub("http*\S+", " ", text)  # 删除http及之后
print(t1)
# 匹配常见域名的http或https开头的url
t2 = re.sub(r'(http|https)://(.*?)\.(net|com|cn|org|info|edu|gov|uk|de|ca|jp|fr|au|us|ru|ch|it|nel|se|no|es|mil)', '', text)
print(t2)
# 匹配www开头的url
t3 = re.sub(r'^www\.(.*?)\.(net|com|cn|org|info|edu|gov|uk|de|ca|jp|fr|au|us|ru|ch|it|nel|se|no|es|mil)', '', text)
print(t3)
# 用match匹配带有://前面内容的url,用findall匹配url的各个部分
# \w+匹配任意数字、字母级下划线,等价于 '[^A-Za-z0-9_]'
# ([^/:]+)匹配非/或:的内容
# (:\d*)? 匹配:任意数字0次或1次(考虑到了以ip+端口号的情况,或者域名映射不在服务器80端口的情况)
# ([^# ]*)匹配任意非#和空格内容
t4 = re.match(r"(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)", text)
if t4:print(t4.group())
# 其他:
p5 = r"^(f|ht){1}(tp|tps):\\/\\/([\\w-]+\\.)+[\\w-]+(\\/[\\w- ./?%&=]*)?"

后向引用

分类   代码/语法   说明
捕获  (exp)           匹配exp,并捕获文本到自动命名的组里(?<name>exp)   匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)(?:exp)            匹配exp,不捕获匹配的文本,也不给此分组分配组号
零宽断言    (?=exp)            匹配exp前面的位置(?<=exp)  匹配exp后面的位置(?!exp)           匹配后面跟的不是exp的位置(?<!exp)   匹配前面不是exp的位置
注释  (?#comment) 这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读
# 例1:匹配重复的单词
# (\b(\w+)\b),这个单词会被捕获到编号为1的分组中,\1代表编号1的分组,即第一个括号(\w+)捕获的内容
s2 = "go go"
p1 = re.compile(r"\b(\w+)\b\s+\1\b")
r1 = re.match(p1, s2)
print(r1.group())# 例2:获取所有数字段
import re
text1 = "Cats are smarter than dogs A23G4HFD567"
# ?P<>是将后面匹配的\d数据取一个组名,组名必须唯一不重复且没有特殊符号
s = re.findall('(?P<value>\d+)', text1)  # +至少一个,\d数字
print(s)# 例3:获取路径中包含的某个中间路径之后的内容
import re
pat2 = re.compile('(?<=/yourmidpath).*$')
# 例如:
path = 'D:/test/yourmidpath/needpathorfile'
s1 = re.findall(pat2, path)
print(s1)
# 运行结果
# ['/needpathorfile']# 例4:将匹配的数字乘以2
def double(matched):value = int(matched.group('value'))return str(value * 2)
print(re.sub('(?P<value>\d+)', double, text1))# 例5:返回身份证号码的省市和出生年份,并转化成{变量名:值}的字典
sfz = "1102231990xxxxxxxx"
res = re.search('(?P<province>\d{3})(?P<city>\d{3})(?P<born_year>\d{4})', sfz)
print(res.groupdict())

匹配任意多个空格

import re
pat3 = re.compile(r' +')
s1 = '前        后'
s2 = re.sub(' +', ' ', s1)
或者
s2 = re.sub(r'\s+', ' ', s1)
print(s2)
# 运行结果:
# 前 后

匹配邮箱

  1. 参考:https://blog.csdn.net/make164492212/article/details/51656638
  2. 思路:
  • 没有统一的邮箱账号格式
  • 但是所有邮箱都符合账号@域名的格式
    • 实例1:只允许英文字母、数字、下划线、英文句号以及中划线组成

      • 名称部分:[a-zA-Z0-9_-]+
      • 域名部分:
        • 一般域名规律为[N级域名][三级域名][二级域名][顶级域名],例如qq.com、163.com、gamil.com、12-34.com.cn,类似** .** .** .**
        • "**"可以用[a-zA-Z0-9_-]+表示
        • ".**"可以用.[a-zA-Z0-9_-]+表示
        • 多个".**"可以用(.[a-zA-Z0-9_-]+)+表示
        • 最终格式:[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+
    • 实例2:名称运行汉字、英文字母、数字,域名只允许英文域名
      • 名称部分:[a-zA-Z0-9\u4e00-\u9fa5]+
      • 域名部分:[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+
      • 最终格式:[a-zA-Z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+

电话号码

s1 = "(010)88886666"
s2 = "022-22334455"
# \(?,匹配0个或1个(
# 0\d{2}  0和任意两位数字
# [) -]  0个或1个 )、空格、-
p1 = re.compile("\(?0\d{2}[) -]?\d{8}")
r1 = re.match(p1, s1)
if r1:print(r1.group())
# 分枝条件:
# 匹配两种以连字号分隔的电话号码:一种是三位区号,8位本地号(如010-12345678),一种是4位区号,7位本地号(0376-2233445)
0\d{2}-\d{8}|0\d{3}-\d{7}
# 匹配3位区号的电话号码,其中区号可以用小括号括起来,也可以不用,区号与本地号间可以用连字号或空格间隔,也可以没有间隔
\(0\d{2}\)[- ]?\d{8}|0\d{2}[- ]?\d{8}

IP地址

“”"

IP地址中每个数字都不能大于255, IP 地址里的数字可以包含有前导 0

这里将255分为了200-249、250-255、000-199,前三部分带.

((2[0-4]\d|25[0-5]|[01]?\d\d?).){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)

校验IP-v4地址

\b(?

Python 正则(re)使用随笔相关推荐

  1. 译-在Python正则模式中search()和match()的区别是什么?

    问:在Python正则模式中search()和match()的区别是什么? 我已经阅读了现有的相关文档,但是我总是记不住,碰到类似的问题,我还要不断地查找再学习,我希望某个大神能够给个清晰的案例,让我 ...

  2. python 正则的使用 —— 编写一个简易的计算器

    python 正则的使用 -- 编写一个简易的计算器 在 Alex 的博客上看到的对正则这一章节作业是编写一个计算器,要求能计算出下面的算式. 1 - 2 * ( (60-30 +(-40/5) * ...

  3. python 正则之提取字符串中的汉字,数字,字母

    python 正则之提取字符串中的汉字,数字,字母 #\d 匹配一个数字字符.等价于 [0-9] #\D 匹配一个非数字字符.等价于 [^0-9]#过滤字符串中的英文与符号,保留汉字 import r ...

  4. python 正则学习笔记

    python 正则学习笔记 官方document #1.0 import re m=re.search('(?<=abc)def','cxabcdefgb')print(m.group(0))# ...

  5. python正则group()的用法—正则提取括号内以及其他符号内内容

    python正则提取括号内以及其他符号内内容,我以前学过一点点正则,但是学的不深,用的正则也是最笨的正则方法,只会group(0). 然而,我今天又看了下正则,发现正则的提取确实好用.无论爬虫还是文本 ...

  6. Python正则简单实例分析

    本文实例讲述了Python正则简单用法.分享给大家供大家参考,具体如下: 悄悄打入公司内部UED的一个Python爱好者小众群,前两天一位牛人发了条消息: 小的测试题: re.split('(\W ) ...

  7. Python正则替换字符串函数re.sub用法示例(1)

    本文实例讲述了Python正则替换字符串函数re.sub用法.分享给大家供大家参考,具体如下: python re.sub属于python正则的标准库,主要是的功能是用正则匹配要替换的字符串 然后把它 ...

  8. python 正则使用笔记

    python正则使用笔记 def remove_br(content):"""去除两边换行符"""content = content.rep ...

  9. python正则r的作用_Python正则表达式,这一篇就够了!

    原标题:Python正则表达式,这一篇就够了! 大多数编程语言的正则表达式设计都师从Perl,所以语法基本相似,不同的是每种语言都有自己的函数去支持正则,今天我们就来学习 Python中关于 正则表达 ...

最新文章

  1. zeptojs-跑马灯效果
  2. 使用ModelBinder自动过滤获取Model值的空格
  3. 文本挖掘预处理:向量化与Hash Trick
  4. 如何导出maven子项目_如何使用maven 轻松重构项目
  5. oxford5k和paris6k数据集介绍_sklearn函数:KFold(分割训练集和测试集)
  6. dojo.publish 和 dojo.subscribe
  7. Docker最全教程之使用 Visual Studio Code玩转Docker(二十一)
  8. nginx资源定向 css js路径问题
  9. 数据结构顺序表基本流程
  10. CentOS64位下python2.6升级到2.7的详细教程
  11. 阿里一面,说说你知道消息中间件的应用场景有哪些?
  12. Uncaught (in promise) Error: timeout of 10000ms exceeded---SpringCloud Alibaba_若依微服务框架改造---工作笔记009
  13. browserCaps与浏览器功能设置
  14. ubuntu9.10之grub.cfg详解
  15. UnRAR.dll解压rar文件
  16. 【Python】对英文文本进行词频统计(分词、字典排序、文件读写)
  17. 高质量解读《互联网企业安全高级指南》三部曲——实践篇
  18. 小说作者推荐:炤炤酒合集
  19. java游戏黑莓手机,简约而不简单 16款经典黑莓手机小游戏
  20. 华为p50官方首曝鸿蒙,华为P50,会是鸿蒙系统的首发手机吗?

热门文章

  1. 产品设计过程中,如何理解用户任务
  2. Gams与Matlab如何实现数据交互
  3. 最短作业优先(SJF)调度算法
  4. h5深色模式快速适配背景和字体颜色
  5. 如何用css实现带√三角形
  6. python画椭圆形函数算法_python如何使用matplotlib绘制椭圆的数学公式-百度经验
  7. Linux学习-光盘写入工具
  8. 4G模块上手学习1——AT命令大全
  9. 【流接口驱动】流接口设备驱动的架构
  10. SQL截取查询结果中固定字段之间的内容