# .,\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. 实现一个简单的Laravel的dd库

    前几天写了一个简单的Laravel的dd库. 为什么自己要写一个这样的库? Laravel本身已经实现了自己的输出dd函数,但是我之所以要写这样一个库,一来是因为Laravel本身对这个库的封装没办法 ...

  2. 改变input光标颜色与输入字体颜色不同

    设置input css: color #ffd600text-shadow 0px 0px 0px #bababa -webkit-text-fill-color initial input, tex ...

  3. 7_SQL Server通过代码删除数据

    --通过代码方式删除数据select *from Employee --第一种删除方式,数据没了,表还在,id接着删除前的id继续加1delete from Employee where EmpId ...

  4. 关于JS正则——你知道多少?

    正则表达式 1. 使用正则 创建正则表达式有两种方式,一种是以字面量方式创建,另一种是使用RegExp构造函数来创建. var expression = / pattern / flags; var ...

  5. AJAX 处理xml 数据

    //这个方式返回的得是 xml标准的对象,可以返回 xml字符串,前端js 使用转为xml   function createXml(str){ if(document.all){//IE浏览器 va ...

  6. 玩一把JS的链式调用

    链式调用我们平常用到很多,比如jQuery中的$(ele).show().find(child).hide(),再比如angularjs中的$http.get(url).success(fn_s).e ...

  7. CSS3动画效果之animation

    先解决上一篇的遗留问题. div { width: 300px; height: 200px; background-color: red; -webkit-animation: test1 2s; ...

  8. linux c编程:初识进程与线程

    p { margin-bottom: 0.25cm; line-height: 120% } (一) 认识进程 在Linux系统中,每一个进程都有自己的ID,就如同人的身份证一样.linux中有一个数 ...

  9. NHibernate教程(18)--对象状态

    本节内容 引入 对象状态 对象状态转换 结语 引入 在程序运行过程中使用对象的方式对数据库进行操作,这必然会产生一系列的持久化类的实例对象.这些对象可能是刚刚创建并准备存储的,也可能是从数据库中查询的 ...

  10. Linux运维:安装CentOS7.2-图解

    矮哥linux运维群: 93324526 笔者QQ:578843228 此篇博文针对最小化安装,和只有图解.有不懂地方,欢迎加群询问.