Day6_正则表达式
用作匹配数据的方法:
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_正则表达式的更多相关文章
- JS正则表达式常用总结
正则表达式的创建 JS正则表达式的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 var regObj = new RegExp("(^\\s+) ...
- Python高手之路【五】python基础之正则表达式
下图列出了Python支持的正则表达式元字符和语法: 字符点:匹配任意一个字符 import re st = 'python' result = re.findall('p.t',st) print( ...
- C# 正则表达式大全
文章导读 正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串.正则表达式无疑是处理文本最有力的工具,而.NET提供的Regex类实现了验证正则表达式的方法.Regex 类表示不可变(只读)的 ...
- C#基础篇 - 正则表达式入门
1.基本概念 正则表达式(Regular Expression)就是用事先定义好的一些特定字符(元字符)或普通字符.及这些字符的组合,组成一个“规则字符串”,这个“规则字符串”用来判断我们给定的字符串 ...
- JavaScript正则表达式,你真的知道?
一.前言 粗浅的编写正则表达式,是造成性能瓶颈的主要原因.如下: var reg1 = /(A+A+)+B/; var reg2 = /AA+B/; 上述两个正则表达式,匹配效果是一样的,但是,效率就 ...
- Python 正则表达式入门(中级篇)
Python 正则表达式入门(中级篇) 初级篇链接:http://www.cnblogs.com/chuxiuhong/p/5885073.html 上一篇我们说在这一篇里,我们会介绍子表达式,向前向 ...
- 【JS基础】正则表达式
正则表达式的() [] {}有不同的意思. () 是为了提取匹配的字符串.表达式中有几个()就有几个相应的匹配字符串. (\s*)表示连续空格的字符串. []是定义匹配的字符范围.比如 [a-zA-Z ...
- JavaScript 正则表达式语法
定义 JavaScript定义正则表达式有两种方法. 1.RegExp构造函数 var pattern = new RegExp("[bc]at","i"); ...
- [jquery]jquery正则表达式验证(手机号、身份证号、中文名称)
数字判断方法:isNaN()函数 test()方法 判断字符串中是否匹配到正则表达式内容,返回的是boolean值 ( true / false ) // 验证中文名称 function isChin ...
随机推荐
- ledisdb:支持类redis接口的嵌入式nosql
ledisdb现在可以支持嵌入式使用.你可以将其作为一个独立的lib(类似leveldb)直接嵌入到你自己的应用中去,而无需在启动单独的服务. ledisdb提供的API仍然类似redis接口.首先, ...
- python 内存NoSQL数据库
python 内存NoSQL数据库 来自于网络,经过修改,秉承Open Source精神,回馈网络! #!/usr/bin/python #-*- coding: UTF-8 -*- # # memd ...
- try、catch、finally 块的关系
try.catch.finally 块的关系 try块不能单独存在,后面必须跟catch块或者finally块. 三者之间的组合为:try-catch.try-catch-finally.try-fi ...
- TCP三次握手及其背后的缺陷
概述 总结一下TCP中3次握手过程,以及其原生的缺陷 引起的SYN Flood的介绍 [1]TCP三次握手 [2]SYN Flood 1.TCP连接建立--三次握手 几个概念: [1]seq:序号,占 ...
- Uva - 12174 - Shuffle
用滑动窗口的思想,用一个数组保存每个数在窗口中出现的次数.再用一个变量记录在窗口中恰好出现一次的的数的个数,这样可以枚举所有可能的答案,判断它所对应的所有串口,当且仅当所有的串口均满足要求时这个答案可 ...
- 高性能C++网络库libtnet实现:http
HTTP libtnet提供了简单的http支持,使用也很简单. 一个简单的http server: void onHandler(const HttpConnectionPtr_t& con ...
- CSS中编写省略号代码片段
#component-content #dtMain .dt-ul > li .component-item .component-name{ display:inline-block; ...
- hadoop 部署和调优
一.集群安装 1.在所有的机器上建立相同的用户名,如:hadoop. $adduser hadoop $passwd hadoop 2.在/etc/hosts中添加机器名和IP hadoop@hado ...
- Linux C OSS音频编程
在linux下也可以写一个类似麦克风和喇叭这样的应用程序,只要打开/dev/dsp这个设备驱动,对该设备read读操作相当于录音,对这个设备write写操作相当于放音. 对于以下出现的一些参数我就不多 ...
- HDTV(1920x1080)码率和视频质量关系的研究 1 (前期准备)
Hans Hoffmann等人在论文<Studies on the Bit Rate Requirements for a HDTV Format With 1920 x 1080 pixel ...