re+正则01
# 正则
# 正则 ''' 正则就是带语法的字符串,
用来匹配目标字符串得到想要得字符串结果 ''' # 部分语法: # 1.单独字符 # \d 范围 [0-9]
# \D 范围刨除 [^0-9]
# \w 字母+数字+_
# ... # 2.多个字符 # zo* == zo{0,}
# zo+ == zo{1,}
# zo? == zo{0,1} # ---------------------------------------------------------------------------------------------- # 3.多行 # re.M
# ^以什么开头
# $以什么结尾 # re.S
# 换行符也可以进行匹配\n # re.I
# 不区分大小写 import re # --(re模块,正则)--------------------------------------------------------------------------------------------------
# --(import re)-------------------------------------------------------------------------------------------------- # 有语法的字符串,用来匹配获取目标字符串中指定需求的字符串
# \一个杠用来转义,\\俩个杠代表一个\ # Ex # (find all,查找全部) # x = 'asdas64fd65q4f65a4s6d//asdqwr'
# res = re.findall(r'//',x)
# print(res) # | 代表或,or
# r''原义内容
# \+转义内容 # --(大写都是小写的反取)-------------------------------------------------------------------------------------- # r'[A-Za-z0-9哈]' 区间方法[A-Z]|[a-z]|[0-9]|'哈'
# r'a' --- 字符串
# r'ad' --- 字符串
# r'\D' --- 非数字
# r'\d' --- 数字
# r'\w' --- 数字+字母+下划线
# r'\W' --- 刨除(数字+字母+下划线)
# r'\s' --- 所有空白 制表符 换行符
# r'\S' --- 刨除(所有空白 制表符 换行符)
# r'.' --- 所有单个字符,刨除 \n 换行符 # --(Ex)----------------------------------------------------------------------------------------------- # print(re.findall(r'需求',r'查找对象'))
# print(re.findall(r'需求',查找对象变量名)) # print(re.findall(r'[条件范围]{个数}',r'查找对象'))
# print(re.findall(r'[a-z]{2}',r'asdlasjdnsb'))
# ['as', 'dl', 'as', 'jd', 'ns'] # --(贪婪匹配 条件{n,n})-----------------------------------------------------------------------------------------------
# --( * + ? )-----------------------------------------------------------------------------------------------
# print(re.findall(r'条件{个数起数,个数止数}',r'查找对象')) # print(re.findall(r'o{2,}',r'ooaoobooodooqooooooo'))
# ['oo', 'oo', 'ooo', 'oo', 'ooooooo'] # --(多行匹配 条件 re.M)--
# ---------------------------------------------------------------------------------------------
# 格式: print(re.findall(r'^开头符','fasdasd\nefasd\nffwe\nofo',re.M多行)) # ^以后面条件 为开头
# ^.+ 匹配剩余 # re.M 多行(无视\n换行符) 结合^$
# re.S 将\n也能被.匹配
# re.I 不区分大小写 # Ex
# print(re.findall(r'^f.+','faa\nefbb\nffcc\nofo',re.M))
# ['faa', 'ffcc'] # --(分组匹配)----------------------------------------------------------------------------------------------- # ?:取消分组(取消当前分组) # 1.从左往右数,进行编号 # baidu = 'http://www.baidu.com/'
# regexp = re.compile('((http://)(.+))') # 生成正则对象 comile编译
# print(regexp) # re.compile('((http://)(.+)/)')
# print(regexp.search(baidu)) # re.compile('((http://)(.+)/)')
# target = regexp.match(baidu) # match 进行配对处理
# print(target) # <_sre.SRE_Match object; span=(0, 21), match='http://www.baidu.com/'>
# print(target.group(0),id(target.group(0))) # http://www.baidu.com/ 自身
# print(target.group(1),id(target.group(1))) # http://www.baidu.com/
# print(target.group(2)) # http://
# print(target.group(3)) # www.baidu.com # --(替换)------------------------------------------------------------------- # 不参与匹配的条件用( ?:)
# 参与匹配的都会被替换为指定字符串( r'\3\2\1' 内部按照分组重新输出 | r'\'
# 在指定字符串值\num拿到具体分组
# 其他字符串都是原样字符串 # print(re.sub('([a-z]+)(\d+)(.+)',r'\3\2\1','abc123你好')) # 你好123abc
# print(re.sub('([a-z]+)(\d+)(.+)',r'\1','abc123你好')) # abc
# print(re.sub('([a-z]+)(\d+)(.+)',r'\2','abc123你好')) # 123
# print(re.sub('([a-z]+)(\d+)(.+)',r'\3','abc123你好')) # 你好
#
# baidu = 'http://_.www.baidu.com'
# SOHO = 'http://www.soho.com'
# GOOLE = 'goole' # 拿到外部变量名: # 在r原义模式下字符串拼接 'sth'+变量名+'sth'
# print(re.sub('(http://)(www.)(\w+)(.com)',r'\1\2'+GOOLE+'\\4',baidu))
# http://www.goole.com # 在r原义模式下 %s 占位符替换
# print(re.sub('(http://)(www\.)(\w+)(\.com)',r'\1\2%s\4'%GOOLE,baidu))
# http://www.goole.com # 在转义模式下,使用占位符 %s
# print(re.sub('(http://)(www\.)(\w+)(\.com)','\\1\\2%s\\4\\n%s'%(GOOLE,baidu),baidu))
# http://www.goole.com
# http://www.baidu.com # 非贪婪匹配的引用场景:结合特定的开头与结尾
# ------------------------------------------------------------------------------------------------------------------------ # Ex
# print(re.findall(r'f+','faa\nefbb\nffcc\nofo'))
# # (+ 相同字符尽可能多)f+ ['faa', 'fbb', 'ffcc', 'fo']
# print(re.findall(r'f.+','faa\nefbb\nffcc\nofo'))
# # (.+ f .表示一个字符,(.+ = ..........)
# # 后面有多少加多少)['faa', 'fbb', 'ffcc', 'fo']
# res = re.findall('.+','<a>abc</a>')
# # print(res) #['<a>abc</a>']
# res = re.findall('.*','<a>abc</a>')
# # print(res) # ['<a>abc</a>', '']
# res = re.findall('.*?','<a>abc</a>')
# # print(res) # ['', '', '', '', '', '', '', '', '', '', '']
# res = re.findall('<.*>','<a>abc</a>')
# # print(res) # ['<a>abc</a>']
# res = re.findall('.*?>','<a>abc</a>')
# # print(res) # ['<a>', 'abc</a>']
# res = re.findall('\w*?>','<a>abc</a>')
# # print(res) # ['a>', 'a>']
# res = re.findall('(\w*?)>','<a>abc</a>')
# # print(res) # ['a', 'a'] # --------------------------------------------------------------------------------------------------------- # 操作分组的方法
# ?P<name> : 有名分组
#
# res = re.match('(?P<left>\d{3})(?P<center>\d{3})(\d{3})','123456789')
# print(res.group(1)) # 123
# print(res.group('left')) # 123
# print(res.group(2)) # 456
# print(res.group('center')) # 456
# print(res.group(3)) # 789
# print(res.group(0)) # 123456789
re+正则01的更多相关文章
- Python全栈开发第二期课表
day01-python 全栈开发-基础篇 01 开课介绍 01:55:13 ★ 02 开课介绍02 01:28:31 ★ 03 开课介绍03 00:22:55 ...
- C#-正则,常用几种数据解析-端午快乐
在等待几个小时就是端午节了,这里预祝各位节日快乐. 这里分享的是几个在C#中常用的正则解析数据写法,其实就是Regex类,至于正则的匹配格式,请仔细阅读正则的api文档,此处不具体说明,谢谢. 开始吧 ...
- Java正则速成秘籍(三)之见招拆招篇
导读 正则表达式是什么?有什么用? 正则表达式(Regular Expression)是一种文本规则,可以用来校验.查找.替换与规则匹配的文本. 又爱又恨的正则 正则表达式是一个强大的文本匹配工具,但 ...
- Javascript正则构造函数与正则表达字面量&&常用正则表达式
本文不讨论正则表达式入门,即如何使用正则匹配.讨论的是两种创建正则表达式的优劣和一些细节,最后给出一些常用正则匹配表达式. Javascript中的正则表达式也是对象,我们可以使用两种方法创建正则表达 ...
- PHP模板引擎正则替换函数 preg_replace 与 preg_replace_callback 使用总结
在编写PHP模板引擎工具类时,以前常用的一个正则替换函数为 preg_replace(),加上正则修饰符 /e,就能够执行强大的回调函数,实现模板引擎编译(其实就是字符串替换). 详情介绍参考博文:P ...
- python匹配ip正则
python匹配ip正则 #!/usr/bin/env python # -*- coding:utf-8 -*- import re ip_str = "asdad1.1.1.1sdfwe ...
- js正则实现二代身份证号码验证详解
js正则实现二代身份证号码验证详解 根据[中华人民共和国国家标准 GB 11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成.排列顺序从左至 ...
- TP框架自带的正则验证的规则(转载)
thinkphp框架里面自带有很多自动验证的规则,下面是框架自带的正则验证的规则,官方的说明文档里面没有这么多,所以记下来,以备使用. view sourceprint?01static $regex ...
- js正则表单验证汇总,邮箱验证,日期验证,电话号码验证,url验证,信用卡验证,qq验证
本文主要汇总各种正则验证,很多都是转载,本人也会尽可能验证准确性,如有错误欢迎留言 //trim()方法在有些浏览器中不兼容,最好自己重写一下 String.prototype.trim=functi ...
随机推荐
- java,sort的数组降序
1.Array.sort(数组,起始位置,结束位置).这个是升序排序. 2.关于数组的降序实现如下: 利用Collections.reverseOrder()方法: import java.util. ...
- h5微信支付在微信内页使用微信公众号支付
由于app的迭代,原本的微信支付是使用原生写的 然后h5这边做交互,现在需要修改使用h5的微信支付,于是就有了现在的这个例子,微信支付其实对于我们前端来说就是调用接口然后,根据链接进行支付,其中有点坑 ...
- OO-第一单元总结
经过了前三次作业和两次实验的引导,我的编程思路在逐步从面向过程转向面向对象.也对面向对象有了初步的理解.虽然第一次实验由于自己没有及时完成导致没有提交过有些遗憾,但是第二次实验还是提交了几次的(虽然由 ...
- python3.7导入gevent模块报错的解决方案
最近更新了python解释器3.7 结果安装gevent,在导入gevent之后就报错了,错误信息如下 RuntimeWarning: greenlet.greenlet size changed, ...
- 微信 + weui 框架记录
WeUI 是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信内网页和微信小程序量身设计,令用户的使用感知更加统一: 包含button.cell.dialog. progress. to ...
- springcloud-spring cloud config统一配置中心
统一配置中心 为什么需要统一配置中心? 统一配置中心顾名思义,就是将配置统一管理,配置统一管理的好处是在日后大规模集群部署服务应用时相同的服务配置一致,日后再修改配置只需要统一修改全部同步,不需要一个 ...
- h5微信页面在手机微信端和微信web开发者工具中都能正常显示,但是在pc端微信浏览器上打不开(显示空白)
h5微信页面在手机微信和微信开发者工具中都能正常显示,但是在pc端微信浏览器上打不开或者数据加载不出来. 原因:pc端微信浏览器不支持ES6语法,我的代码中使用了一些ES6的特性 解决:将ES6转换为 ...
- Oracle中 “ORA-14551: 无法在查询中执行 DML 操作” 如何解决
在编写一个数据库函数时,方法实现需要查询后进行修改,出现ora-14551的错误 create or replace function fun_DxcBillSn(tabType integer,ta ...
- 小程序中通过判断id来删除数据,当数据长度为0时,显示隐藏部分(交流QQ群:604788754)
欢迎加入小程序交流群:本群定期更新在工作种遇到的小知识(交流QQ群:604788754) WXML: <!--遍历循环的数据部分--> <block wx:for="{{d ...
- laravel5.5首次使用php artisan migrate注意问题:
1.在app/Providers/AppServiceProvider.php中设置字符串默认长度:(不进行这一步,执行php artisan migrate会报错,同时创建的表会有所缺失) use ...