用作匹配数据的方法:

print(re.findall('\w','yangshuai 123 asd \n \t'))
#w:匹配字母数字下划线
print(re.findall('\W','yangshuai 123 asd | \n \t'))
#W:匹配非字母数字下划线
print(re.findall('\s','yangshuai 123 asd \n \t'))
#s:匹配任意空白字符,等价于[\t\n\r]
print(re.findall('\S','yangshuai 123 asd \n \t'))
#S:匹配任意非空字符
print(re.findall('\d','yangshuai 123 asd \n \t'))
#d:匹配任意数字
print(re.findall('\D','yangshuai 123 asd \n \t'))
#D:匹配任意非数字
print(re.findall('y','yangshuai 123 yasd \n \t'))
#匹配任意单个字符
print(re.findall('^y','yangshuai 123 yasd \n \t'))
#只匹配开头的单个值
print(re.findall('y\Z','yangshuai 123 yasd \n \t'))
#匹配结尾的单个值

# .  []   [^]

.: 本身代表任意一个字符
print(re.findall('a.c','a a1c a*c abc a c aaaaac aacc'))

#[]内部可以有多个字符,但是本身只匹配字符中的一个
print(re.findall('a[1 2 3]c','a a1c a*c abc a c aaaaac aacc'))
#匹配+-*/ 的时候最好加上转移符号\ ,例如\+\-\*\/

转义:
print(re.findall(r'a\\c','a a1c a*c abc a\c aaaaac aacc'))
#这里的话如果不加r,匹配一个\需要加入4个\\\\
#如果这里加r,匹配一个\需要加入两个\\

#? * + {}

#? 左边的哪一个字符有0个或者1个
print(re.findall('ab?','a ab abb abbb abbbb bbbb'))

#* 左边的字符有0个或者无穷个
print(re.findall('ab*','a ab abb abbb abbbb bbbb'))

#+左边的哪一个字符有1个或者无穷个
print(re.findall('ab+','a ab abb abbb abbbb bbbb'))

#{n,m}左边的字符有n-m次
print(re.findall('ab{3}','a ab abb abbb abbbb bbbb'))

.*   .*?

.* :贪婪匹配
print(re.findall('a.*c','a ab abb abbb abbbb bbbb'))

.*? :非贪婪匹配
print(re.findall('a.*?c','a123c456c'))

| :#当匹配左边不成功的情况下,会匹配右边的情况
print(re.findall('company|companies','sadsdsd fasffa company companies'))

() :分组,只显示()内的内容
print(re.findall('ab+','ababababab123'))
print(re.findall('ab+123','ababababab123'))
print(re.findall('(a)b','ababababab123'))

?:  :取得是匹配成功后所有的内容

print('(?:ab)','ababababab123')

#re的其他方法:

findall:找出所有的匹配的值

search:从开头开始匹配,当匹配成功了就不往后继续了。

用法:print(re.search('ab','abababab123').group)

必须加上.group,不加上group的话是一段内存地址。

match: 从头去找,匹配的第一个值不是寻找的内容,然后就直接略过

用法:print(re.match('ab','abababab123').group)

split: 以想要的内容作为切分

用法:print(re.split('b','abcde'))

sub:将匹配到的内容替换为指定的内容

subn:将匹配到的内容替换为指定的内容,替换几次

print(re.sub('alex','SB','alex make love alex alex'))

#将所匹配的内容全部替换

print(re.subn('alex','SB','alex make love alex alex',1))

#将所匹配到的内容替换几次

也可以这样用,按段匹配数据,然后做位置置换。

print(re.sub('(\w+)( .* )(\w+)',r'\3\2\1','alex make love'))

Day6_正则表达式的更多相关文章

  1. JS正则表达式常用总结

    正则表达式的创建 JS正则表达式的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 var regObj = new RegExp("(^\\s+) ...

  2. Python高手之路【五】python基础之正则表达式

    下图列出了Python支持的正则表达式元字符和语法: 字符点:匹配任意一个字符 import re st = 'python' result = re.findall('p.t',st) print( ...

  3. C# 正则表达式大全

    文章导读 正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串.正则表达式无疑是处理文本最有力的工具,而.NET提供的Regex类实现了验证正则表达式的方法.Regex 类表示不可变(只读)的 ...

  4. C#基础篇 - 正则表达式入门

    1.基本概念 正则表达式(Regular Expression)就是用事先定义好的一些特定字符(元字符)或普通字符.及这些字符的组合,组成一个“规则字符串”,这个“规则字符串”用来判断我们给定的字符串 ...

  5. JavaScript正则表达式,你真的知道?

    一.前言 粗浅的编写正则表达式,是造成性能瓶颈的主要原因.如下: var reg1 = /(A+A+)+B/; var reg2 = /AA+B/; 上述两个正则表达式,匹配效果是一样的,但是,效率就 ...

  6. Python 正则表达式入门(中级篇)

    Python 正则表达式入门(中级篇) 初级篇链接:http://www.cnblogs.com/chuxiuhong/p/5885073.html 上一篇我们说在这一篇里,我们会介绍子表达式,向前向 ...

  7. 【JS基础】正则表达式

    正则表达式的() [] {}有不同的意思. () 是为了提取匹配的字符串.表达式中有几个()就有几个相应的匹配字符串. (\s*)表示连续空格的字符串. []是定义匹配的字符范围.比如 [a-zA-Z ...

  8. JavaScript 正则表达式语法

    定义 JavaScript定义正则表达式有两种方法. 1.RegExp构造函数 var pattern = new RegExp("[bc]at","i"); ...

  9. [jquery]jquery正则表达式验证(手机号、身份证号、中文名称)

    数字判断方法:isNaN()函数 test()方法 判断字符串中是否匹配到正则表达式内容,返回的是boolean值 ( true / false ) // 验证中文名称 function isChin ...

随机推荐

  1. 手把手教你轻松实现listview上拉加载

    上篇讲了如何简单快速的的实现listview下拉刷新,那么本篇将讲解如何简单快速的实现上拉加载更多.其实,如果你已经理解了下拉刷新的实现过程,那么实现上拉加载更多将变得轻松起来,原理完全一致,甚至实现 ...

  2. Android:android sdk源码中怎么没有httpclient的源码了

    欢迎关注公众号,每天推送Android技术文章,二维码如下:(可扫描) 今天想使用这个API,怎么也找不到.废了好多时间... 查阅资料才知道如下解释: 在android 6.0(API 23)中,G ...

  3. [GitHub]第八讲:GitHub Pages

    Github Pages 是 github 公司提供的免费的静态网站托管服务,用起来方便而且功能强大,不仅没有空间限制,还可以绑定自己的域名.在 https://pages.github.com/ 首 ...

  4. iOS中 喷枪打字动画的实现

    实现原理比较简单,这里不做过多介绍. #import "ViewController.h" @interface ViewController () @property (weak ...

  5. Github搭建属于自己的开源项目-androd学习之旅(72)

    Github是一个基于的git的版本控制工具,分为私人代码管理和开源代码管理,下面我们简单的介绍一下 首先登陆官网https://github.com 完成注册,随后首页会有四个模块,第一个是安装的指 ...

  6. python爬虫 - python requests网络请求简洁之道

    http://blog.csdn.net/pipisorry/article/details/48086195 requests简介 requests是一个很实用的Python HTTP客户端库,编写 ...

  7. mysql语法、特殊符号及正则表达式的使用

    http://blog.csdn.net/pipisorry/article/details/46773545 sql语言 结构化的查询语言.(Structured Query Language),是 ...

  8. Java进阶(二十一)java 空字符串与null区别

    java 空字符串与null区别 1.类型 null表示的是一个对象的值,而并不是一个字符串.例如声明一个对象的引用,String a = null ; ""表示的是一个空字符串, ...

  9. STL - 容器共性机制研究

    C++模板是容器的概念. 理论提高:所有容器提供的都是值(value)语意,而非引用(reference)语意.容器执行插入元素的操作时,内部实施拷贝动作.所以STL容器内存储的元素必须能够被拷贝(必 ...

  10. 【翻译】了解ASP.NET MVC中的Ajax助手

    原文:Understanding AJAX Helpers in ASP.NET MVC 作者: Shailendra Chauhan works as Software Analyst at rep ...