# 正则
# 正则 ''' 正则就是带语法的字符串,
用来匹配目标字符串得到想要得字符串结果 ''' # 部分语法: # 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的更多相关文章

  1. Python全栈开发第二期课表

     day01-python 全栈开发-基础篇                 01 开课介绍 01:55:13 ★  02 开课介绍02 01:28:31 ★  03 开课介绍03 00:22:55 ...

  2. C#-正则,常用几种数据解析-端午快乐

    在等待几个小时就是端午节了,这里预祝各位节日快乐. 这里分享的是几个在C#中常用的正则解析数据写法,其实就是Regex类,至于正则的匹配格式,请仔细阅读正则的api文档,此处不具体说明,谢谢. 开始吧 ...

  3. Java正则速成秘籍(三)之见招拆招篇

    导读 正则表达式是什么?有什么用? 正则表达式(Regular Expression)是一种文本规则,可以用来校验.查找.替换与规则匹配的文本. 又爱又恨的正则 正则表达式是一个强大的文本匹配工具,但 ...

  4. Javascript正则构造函数与正则表达字面量&&常用正则表达式

    本文不讨论正则表达式入门,即如何使用正则匹配.讨论的是两种创建正则表达式的优劣和一些细节,最后给出一些常用正则匹配表达式. Javascript中的正则表达式也是对象,我们可以使用两种方法创建正则表达 ...

  5. PHP模板引擎正则替换函数 preg_replace 与 preg_replace_callback 使用总结

    在编写PHP模板引擎工具类时,以前常用的一个正则替换函数为 preg_replace(),加上正则修饰符 /e,就能够执行强大的回调函数,实现模板引擎编译(其实就是字符串替换). 详情介绍参考博文:P ...

  6. python匹配ip正则

    python匹配ip正则 #!/usr/bin/env python # -*- coding:utf-8 -*- import re ip_str = "asdad1.1.1.1sdfwe ...

  7. js正则实现二代身份证号码验证详解

    js正则实现二代身份证号码验证详解 根据[中华人民共和国国家标准 GB 11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成.排列顺序从左至 ...

  8. TP框架自带的正则验证的规则(转载)

    thinkphp框架里面自带有很多自动验证的规则,下面是框架自带的正则验证的规则,官方的说明文档里面没有这么多,所以记下来,以备使用. view sourceprint?01static $regex ...

  9. js正则表单验证汇总,邮箱验证,日期验证,电话号码验证,url验证,信用卡验证,qq验证

    本文主要汇总各种正则验证,很多都是转载,本人也会尽可能验证准确性,如有错误欢迎留言 //trim()方法在有些浏览器中不兼容,最好自己重写一下 String.prototype.trim=functi ...

随机推荐

  1. diango admin 添加成员报错

    [报错内容]: IntegrityError at /admin/users/userprofile/add/ (1452, 'Cannot add or update a child row: a ...

  2. Promise的两种处理异步的方式

    单个异步处理: let usedMemoryPromise = fetchUsedMemeory(); usedMemoryPromise.then(data => {...}) functio ...

  3. Linq语句jion on后指定多个条件

    代码如下: private void FrmMain_Load(object sender, EventArgs e) { var list1 = Supplier.GetSuppliers(); v ...

  4. 每日算法---Two Sum

    Given an array of integers, return indices of the two numbers such that they add up to a specific ta ...

  5. javascript高级程序设计第3版——第10章 DOM

    第十章,DOM DOM是语言中立的API,用于访问和操作HTML 和XML 文档.DOM1 级将HTML 和XML 文档形象地看作一个层次化的节点树,可以使用JavaScript 来操作这个节点树,进 ...

  6. angular2学习笔记3

    一.项目搭建 二.生成首页的4个tab页面 三.运行部署及配置

  7. PDF 补丁丁 0.6.0.3326 版发布(修复提取图片的问题)

    新的 PDF 补丁丁已经发布. 新版本更新了 PDF 渲染引擎. 另外修复了网友提出的提取图片功能中的两个问题.

  8. 使用线程操作刷新Winform界面

    主窗体中添加代码 public FrmMain() { InitializeComponent(); System.Threading.Thread thread = new System.Threa ...

  9. UVa 11389 - The Bus Driver Problem 难度:0

    题目 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a ...

  10. C#中自定义高精度Timer定时器的实例教程

    Timer 用于以用户定义的事件间隔触发事件.Windows 计时器是为单线程环境设计的,其中,UI 线程用于执行处理.它要求用户代码有一个可用的 UI 消息泵,而且总是在同一个线程中操作,或者将调用 ...