正则表达式匹配与查找

import re

datepat = re.compile(r‘(\d+)/(\d+)/(\d+)‘)

m = datepat.match(‘11/27/2012‘)

print(m)

print(m.group(0))

print(m.group(1))

print(m.group(2))

print(m.group(3))

print(m.groups())

month, day, year = m.groups()

text = ‘Today is 11/27/2012. PyCon starts 3/13/2013.‘

datepat.findall(text)

for month, day, year in datepat.findall(text):

print(‘{}-{}-{}‘.format(year, month, day))

输出:

<_sre.SRE_Match object; span=(0, 10), match=‘11/27/2012‘>

11/27/2012

11

27

2012

(‘11‘, ‘27‘, ‘2012‘)

2012-11-27

2013-3-13

text = ‘@[email protected]$python‘

m = re.search(r"\w+", text)

if m:

print(m.group(0))  #python

else:

print(‘not match‘)

def test_findall_search():

str1 = ‘456abc789abc8910abc‘

re_str = re.compile(r‘\d+‘)

re_findall = re_str.findall(str1)

print(re_findall)    #[‘456‘,‘789‘,‘8910‘]

re_search = re_str.search(str1)

print(re_search)    #<_sre.SRE_Match object; span=(0, 3), match=‘456‘>

print(re_search.group(0))   #456

test_findall_search()

时间: 2024-10-06 20:28:25

正则表达式匹配与查找的相关文章

Flex的正则表达式匹配速度与手工代码的比较

flex是一个词法分析器生成器,它是编译器和解释器编程人员的常用工具之一.flex的程序主要由一系列带有指令(称为动作代码)的正则表达式组成.在匹配输入时,flex会将所有的正则表达式翻译成确定性有穷自动机,这使得flex等词法分析器生成器生成的词法分析器匹配输入模式的效率非常高.当然,有人指责flex不够灵活,功能有限,很多问题都无法解决,比如Javascript.C++等语言中二义性的问题,实际上很多程序(比如Python的解释器)的词法分析器都是用的手工代码而不是flex自动生成的.这些都

oracle 正则表达式 匹配

oracle 正则表达式 在实际应用中,想排除带有中文的字段值: select h.froomnumber from t_broker_house h where REGEXP_LIKE(froomnumber,'^([a-z0-9A-Z]|-)*$') 字符串’^198[0-9]$’可以匹配‘1980-1989’,如果希望统计出公司那些员工是80年-89年入职的,就可以使用如下的SQL语句: select * from emp e where regexp_like(to_char( e.hi

使用正则表达式匹配任意字符包括空格和换行符

注:元字符包括\ | ( ) [ ] { } ^ $ * + ? . ) 匹配中文字符的正则表达式: [\u4e00-\u9fa5]评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^\x00-\xff]评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 匹配空白行的正则表达式:\n\s*\r评注:可以用来删除空白行 匹配HTML标记的正则表达式:<(\S*?)[^>]*>.*?</>|<.*? />

【python cookbook】【字符串与文本】4.文本模式的匹配和查找

问题:按照特定的文本模式进行匹配或查找 解决方法: 1.简单的文字匹配,只需使用str.find().str.startswith().str.endswith()或类似的函数即可: 2.复杂的匹配,需要使用正则表达式以及re模块 >>> import re >>> text1='11/23/2016' >>> text2='Nov 23,2016' >>> if re.match(r'\d+/\d+/\d+',text1): pri

在Visual Studio中使用正则表达式匹配换行和批量替换

系统环境:Windows 8.1 Enterprise Update 2 x64 开发环境:Mircosoft Visual Studio Ultimate 2013 Update 2 RC 问题:如何在Visual Studio中使用正则表达式匹配换行符,空白符,Tab符等特殊符号,并且在当前文档或当前项目或整个解决方案中批量替换你指定的代码文字? 例子: 1 /// <summary> 2 /// 根据条件查询表中所有数据 3 /// </summary> 4 /// <

正则表达式匹配规则及示例

正则表达式 - 匹配规则 基本模式匹配 一切从最基本的开始.模式,是正规表达式最基本的元素,它们是一组描述字符串特征的字符.模式可以很简单,由普通的字符串组成,也可以非常复杂,往往用特殊的字符表示一个范围内的字符.重复出现,或表示上下文.例如: ^once 这个模式包含一个特殊的字符^,表示该模式只匹配那些以once开头的字符串.例如该模式与字符串"once upon a time"匹配,与"There once was a man from NewYork"不匹配

正则表达式匹配解析过程探讨分析(正则表达式匹配原理)

已经有多篇关于正则表达式介绍的文章,随着我们越来越多使用正则表达式,想对性能做优化.减少我们正则表达式书写匹配Bug.我们不得不进一步深入了解正则表达式执行过程了.下面我们一起学习,分析下正则表达式执行过程.我们会用regexbuddy测试工具分解执行过程,具体工具使用,可以看:正则表达式性能测试工具推荐.优化工具推荐(regexbuddy推荐).要了解正则表达式解析过程前,我们先来熟悉几个概念. 常见正则表达式引擎 引擎决定了正则表达式匹配方法及内部搜索过程,了解它至关重要的.目前主要流行引擎

nginx不使用正则表达式匹配

^~   普通字符的匹配,查到之后立即停止查找其他location,不再进行正则表达式匹配,含有正则表达式的符号也将其作为普通字符匹配,优先级小于精确匹配大于正则匹配. server { listen       80; server_name  localhost; location  ^~ /images/ { root /usr/local/; index 1.jpg; } location  /images { root /usr/local/image/; index 1.gif; }

PHP核心技术与最佳实践之正则表达式匹配规则

PHP核心技术与最佳实践之正则表达式匹配规则 本文介绍几种常用的匹配规则. 1.     字符组 查找数字.字母.空白很简单,因为已经有了对应这些集合的元字符,但是如果匹配没有预定义元字符的字符集合,方法很简单, 就是在方括号内列出它们. 例如:[aeiou]匹配任何一个英文元音字母,[.*?]匹配标点中的一个.注意此时方括号内的元字符失去了特殊意义. 也可以指定字符范围,例如[0-9]的含义和\d完全一致:代表一位数字:同理[a-zA-Z0-9]等同于\w; 字符组很简单,但是一定要弄清楚字符