# .,\w,\s,\d,,^,$
# *,+,?,{n},{n,},{n,m} # re模块用于对python的正则表达式的操作。
#
# 字符:
#
#   . 匹配除换行符以外的任意字符
#   \w 匹配字母或数字或下划线或汉字
#   \s 匹配任意的空白符
#   \d 匹配数字
#   \b 匹配单词的开始或结束
#   ^ 匹配字符串的开始
#   $ 匹配字符串的结束
#
# 次数:
#
#   * 重复零次或更多次
#   + 重复一次或更多次
#   ? 重复零次或一次
#   {n} 重复n次
#   {n,} 重复n次或更多次
#   {n,m} 重复n到m次 import re
# match(pattern, string, flags=0)
# 从起始位置开始根据模型去字符串中匹配指定内容,匹配单个
# 正则表达式
# 要匹配的字符串
# 标志位,用于控制正则表达式的匹配方式
# strings = re.match('\d+','123df45')
# print(strings)
# print(strings.group())
# print(strings.groups())
# <_sre.SRE_Match object; span=(0, 3), match='123'>
# 123
# () #根据模型去字符串中匹配指定内容,匹配单个
# obj = re.search('\d+','u9f34k')
# print(obj)
# print(obj.group())
# <_sre.SRE_Match object; span=(1, 2), match='9'>
# 9 # group和groups
# a = '123abc456'
# print(re.search("([0-9]*)([a-z]*)([0-9]*)",a).group())
# # 123abc456
# print(re.search("([0-9]*)([a-z]*)([0-9]*)",a).groups())
# # ('123', 'abc', '456')
# print(re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(0))
# # 123abc456
# print(re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(1))
# # 123
# print(re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(2))
# #abc
# print(re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(3))
# #456 # findall(pattern, string, flags=0)
# 上述两中方式均用于匹配单值,即:只能匹配字符串中的一个,如果想要匹配到字符串中所有符合条件的元素,则需要使用 findall。
# a = '123abc567'
# obj = re.findall('\d+',a)
# print(obj)
# print()
# ['123', '567'] # sub(pattern, repl, string, count=0, flags=0)
# 用于替换匹配的字符串 # content = '123abc456'
# new_content = re.sub('\d+','sb',content)
# # sbabcsb
# print(new_content)
# new = re.sub('\d+','xxoo',content,3)
# print(new)
# xxooabcxxoo content = "'1 - 2 * ((60-30+1*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2) )'"
# new_content = re.split('\*',content)
# print(new_content)
# # ["'1 - 2 ", ' ((60-30+1', '(9-2', '5/3+7/3', '99/4', '2998+10', '568/14))-(-4', '3)/(16-3', "2) )'"]
# new_content2 = re.split('\*',content,1)
# print(new_content2)
# # ["'1 - 2 ", " ((60-30+1*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2) )'"]
#
# new_content3 = re.split('\*',content,3)
# print(new_content3)
# # ["'1 - 2 ", ' ((60-30+1', '(9-2', "5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2) )'"] # new_content = re.split('[\+\-\*\/]+',content)
# print(new_content)
# ["'1 ", ' 2 ', ' ((60', '30', '1', '(9', '2', '5', '3', '7', '3', '99', '4', '2998', '10', '568', '14))', '(', '4', '3)', '(16', '3', "2) )'"] # inpp = '1-2*((60-30 +(-40-5)*(9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2))'
# inpp = re.sub('\s*','',inpp)
# print(inpp)
# # 1-2*((60-30+(-40-5)*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))
#
# new_content = re.split('\(([\+\-\*\/]?\d+[\+\-\*\/]?\d+){1}\)',inpp, 1)
# print(new_content)

Python实战之正则表达式RE/re学习笔记及简单练习的更多相关文章

  1. Python实战之网络编程socket学习笔记及简单练习

    sk = socket.socket(socket.AF_INET,socket.SOCK_STREAM,0) 参数一:地址簇 socket.AF_INET IPv4(默认) socket.AF_IN ...

  2. Python的dict字典结构操作方法学习笔记

    Python的dict字典结构操作方法学习笔记 这篇文章主要介绍了Python的dict字典结构操作方法学习笔记本,字典的操作是Python入门学习中的基础知识,需要的朋友可以参考下 一.字典的基本方 ...

  3. [Python ]小波变化库——Pywalvets 学习笔记

    [Python ]小波变化库——Pywalvets 学习笔记 2017年03月20日 14:04:35 SNII_629 阅读数:24776 标签: python库pywavelets小波变换 更多 ...

  4. Spark学习笔记0——简单了解和技术架构

    目录 Spark学习笔记0--简单了解和技术架构 什么是Spark 技术架构和软件栈 Spark Core Spark SQL Spark Streaming MLlib GraphX 集群管理器 受 ...

  5. JSP学习笔记(三):简单的Tomcat Web服务器

    注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...

  6. JAVA WEB学习笔记(三):简单的基于Tomcat的Web页面

    注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...

  7. Html学习笔记(二) 简单标签

    标签的重点 标签的用途 标签在浏览器中的默认样式 <body>标签: 在网页上显示的内容 <p>标签: 添加段落 <hx>标签: 添加标题 标签一共有6个,h1.h ...

  8. Metasploit和python两种安全工具的学习笔记

    Metasploit是个好东西 主要参考了<Metasploit渗透测试魔鬼训练营>这本书. 一.先用自己的靶机感受一下该工具的强大 linux靶机的ip如图 按照书上写的配置,如图 然后 ...

  9. Netty学习笔记(六) 简单的聊天室功能之WebSocket客户端开发实例

    在之前的Netty相关学习笔记中,学习了如何去实现聊天室的服务段,这里我们来实现聊天室的客户端,聊天室的客户端使用的是Html5和WebSocket实现,下面我们继续学习. 创建客户端 接着第五个笔记 ...

随机推荐

  1. java_jstl 标签库

    jstl标签库的使用以及介绍 jstl:jsp标准标签库,是jsp的标签集合,它里面封装了jsp通用的核心功能,比如:建构化的任务,迭代,条件判断,xml 文档的操作,国际化标签,sql标签,还提供框 ...

  2. java开发网易电话面试 一面总结

    晚上八点多自己在看视频的时候突然接到杭州来的一个电话,当时觉得很奇怪,突兀,接通之后被告知是杭州网易打来的,没有简单的自我介绍,没有多余的废话,直接入主题,吓得我心里怪紧张的,完全没有准备,但是也没有 ...

  3. Javascript学习日志(三):闭包

    说实话,前面一节的原型和原型链在当初学的时候并没有很头疼,对着高级编程第三版撸了几遍就理解透了,闭包这一节真的挺头疼的,很惭愧,看了差不多十来遍吧,还翻看了网上的其他博客和解释文档,五花八门的表达方式 ...

  4. 嵌套ajax 页面卡死的问题

    问题:要一个AJAX中的回调函数中又进行了一个AJAX调用,并且这个AJAX是在一个循环调用的,不论设置async属性是true和false页面卡死. 解决方法:async属性都设为true,不用循环 ...

  5. JS学习三(函数)

    [函数的声明格式] 1.函数的声明格式: function 函数名(参数1,参数2,...){ 函数体代码 return 返回值: } 函数的调用: ① 直接调用:函数名(参数1的值,参数2的值,.. ...

  6. 【C++】关于pow函数的用法

    在C++中,pow有多个重载函数: 在dev中,pow(int,int)可以执行,但是在别的地方是不可以被编译的:会提示 :error C2668: “pow”: 对重载函数的调用不明确 可以看见,是 ...

  7. 201521123075 《Java程序设计》第13周学习总结

    1. 本周学习总结 协议 网络中为了进行数据交换(通信)而建立的规则.标准或约定(=语义+语法+规则),比如http, ftp等 IP层协议(Internet Protocol) Internet上的 ...

  8. iScroll在谷歌浏览器中的问题

    通常情况下,我们会使用iScroll.js做移动端的下拉刷新和上拉加载功能,当然,还有很多其他功能. 不过,在使用iScroll的时候,在谷歌浏览器中出现不支持的情况,即,做移动的时候,出现卡顿或是每 ...

  9. Javascript跳转页面和打开新窗口等方法

    1.在原来的窗体中直接跳转用onClick="window.location.href='你所要跳转的页面';" 2.在新窗体中打开页面用:onclick="window ...

  10. CSS3微信启动页天王星版

    今天被微信启动页刷屏了. 一直还以为启动页背景显示的月球的.今天才了解到这么有含义. 我也蹭一下微信的热度,做一个HTML+CSS版本的. 用CSS画地球太困难了,来个简单点的,天王星版. 主要使用到 ...