re正则表达式的使用
1、查找电话号码
#! coding=utf-8
import re
"""查找字符串中的文本"""
txt="your number is 415-555-4242,your name is yy,her number is 131-129-9909"
phoneNumRex=re.compile(r'\d\d\d-\d\d\d-\d\d\d\d')#/d匹配一个数字
phoneNum=re.search(phoneNumRex,txt)
print (phoneNum.group())
结果:415-555-4242
只会匹配第一个电话号码
2、利用括号分组
#! coding=utf-8
import re
"""查找字符串中的文本"""
txt="your number is 415-555-4242,your name is yy,her number is 131-129-9909"
phoneNumRex=re.compile(r'(\d\d\d)-(\d\d\d-\d\d\d\d)')#加上括号进行分组
phoneNum=re.search(phoneNumRex,txt)
print (phoneNum.group())
print (phoneNum.group(0))
print (phoneNum.group(1))
print (phoneNum.groups())#返回一个元祖
结果:
415-555-4242
415-555-4242
415
('415', '555-4242')
3、用管道匹配多个分组,如:r“a|b”将匹配字符a或b,如果a和b都出现,则第1次出现的匹配字符将作为返回对象
#! coding=utf-8
import re
"""查找字符串中的文本"""
txt="your number is 415-555-4242,your name is yy,her number is 13112999091"
phoneNumRex=re.compile(r'(\d\d\d)-(\d\d\d-\d\d\d\d)|[0-9]{11}')#匹配两种情况
phoneNum=re.search(phoneNumRex,txt)
print (phoneNum.group())
结果:415-555-4242
如果将txt中的13112999091放在415-55-4242前面,将首先匹配13112999091
#! coding=utf-8
import re
"""查找字符串中的文本"""
txt="your number is13112999091 ,your name is yy,her number is 415-555-4242"
phoneNumRex=re.compile(r'(\d\d\d)-(\d\d\d-\d\d\d\d)|[0-9]{11}')#匹配两种情况
phoneNum=re.search(phoneNumRex,txt)
print (phoneNum.group())
结果:13112999091
4、?号匹配前面的字符出现1次或0次
#! coding=utf-8
import re
"""查找字符串中的文本"""
txt="your number is13112999091 ,your name is zhang,her number is 415-555-4242"
phoneNumRex=re.compile(r'zhang(san)?')#匹配两种情况,zhang或zhangsan
phoneNum=re.search(phoneNumRex,txt)
print (phoneNum.group())
结果:zhang
5、*匹配前面出现字符的零次或多次
#! coding=utf-8
import re
"""查找字符串中的文本"""
txt="your number is13112999091 ,your name is zhang,her number is 415-555-4242"
phoneNumRex=re.compile(r'zhang(san)*')#匹配两种情况,zhang或zhangsan
phoneNum=re.search(phoneNumRex,txt)
print (phoneNum.group())
结果:zhang
6、+匹配前面出现字符的一次或多次,如:aa(bc)+将匹配aabc或aabcbc或aabcbcbc...
7、用花括号匹配特定次数,如:aa(bb){4}将匹配aabbbbbbbb
8、贪心匹配,(ab){3,5}表示可以匹配ab重复3或5次,但当查找的字符串为ababababab,匹配到的是ababababab,而不是ababab,原因是在有二义的情况下,会尽可能的匹配最长的字符串
例子:
#! coding=utf-8
import re
"""查找字符串中的文本"""
txt="ababababab"
phoneNumRex=re.compile(r"(ab){3,5}")
phoneNum=re.search(phoneNumRex,txt)
print (phoneNum.group())
结果:ababababab
如果在{3,5}后加上一个?,如:(ab){3,5}?则便成了非贪心模式,将匹配ababab
所以问号在正则表达式中可能有两种含义,一种是申明非贪心匹配,一种是匹配前面的字符出现1次或0次
9、findall()方法和search方法的区别
findall方法返回的一组字符串,包含所查找字符串中的所有匹配,而search返回的只包含了第一次出现的匹配的文本
findall返回的是一个字符串列表,而search返回的是一个Match对象
例子:
#! coding=utf-8
import re
"""查找字符串中的文本"""
txt="your number is 131-129-9909 ,your name is zhang,her number is 415-555-4242"
phoneNumRex=re.compile(r"\d\d\d-\d\d\d-\d\d\d\d")
phoneNum=re.findall(phoneNumRex,txt)
print (phoneNum)
结果:
['131-129-9909', '415-555-4242']
如果正则表达式中有分组,findall将返回元祖的列表,如下:
#! coding=utf-8
import re
"""查找字符串中的文本"""
txt="your number is 131-129-9909 ,your name is zhang,her number is 415-555-4242"
phoneNumRex=re.compile(r"(\d\d\d)-(\d\d\d-\d\d\d\d)")
phoneNum=re.findall(phoneNumRex,txt)
print (phoneNum)
结果:
[('131', '129-9909'), ('415', '555-4242')]
re正则表达式的使用的更多相关文章
- 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 ...
- JS中给正则表达式加变量
前不久同事询问我js里面怎么给正则中添加变量的问题,遂写篇博客记录下. 一.字面量 其实当我们定义一个字符串,一个数组,一个对象等等的时候,我们习惯用字面量来定义,例如: var s = &quo ...
随机推荐
- node环境
下载教程:http://www.runoob.com/nodejs/nodejs-install-setup.html 选择版本下载:https://nodejs.org/en/download/ 输 ...
- Cookie在前端读不到 多半是因为Cookie在服务器端的设置是HttpOnly 意味着只能在后台操作Cookie
比如Shiro框架的 RememberMe Cookie 是不允许Js进行读写的 只能在服务器端通过同一个域的请求获得 import com.constantine.forum.exception.F ...
- python练习题_04
import os def fetch(data): # print('\033[1;43m这是查询功能\033[0m') # print('\033[1;43m用户数据是\033[0m',data) ...
- IDEA与eclipse:vm参数调优笔记
我的电脑配置12G内存,64位,win10系统. 首先,idea,是在idea中安装目录下的bin目录下面找到位的同学注意找到idea32.exe.vmoptions的文件去编辑. 更改文件,无非大多 ...
- 聊聊JMM
JMM是什么? JMM 全称 Java memory model ,直译过来就是Java内存模型,这里注意了,指到并不是JVM中的内存分布新生代.老年代.永久代这些,当然也不是 程序计数器(PC).j ...
- 【笔记】Python基础七:正则表达式re模块
一,介绍 正则表达式(RE)是一种小型的,高度专业化的编程语言,在python中它内嵌在python中,并通过re模块实现.正则表达式模式被编译成一系列的字节码,然后由C编写的匹配引擎执行. 字符匹配 ...
- mongo中用嵌套结构优势是什么
首先需要知道,MongoDB是NoSQL中的一种,是不直接支持Join的,这是NoSQL的一个特点,不需要直接支持Join,可以将横向扩展以及性能做到更好. 但是这不等于说MongoDB不能做Join ...
- np.where()命令介绍
- python完整课程
python完整课程 python课程概述 python课程大纲 链接:http://www.cnblogs.com/lx63blog/articles/9054294.html 课程结构: 1.安装 ...
- python note 11 函数名的使用、闭包、迭代器
1.函数名就是一个变量 def func(): print("我是一个小小的函数") a = func print(a) #输出变量存放地址 <function func a ...