python正则表达式re

python正则表达式re

  • 重要的函数

compile(pattern[, flags]) 根据包含正则表达式的字符串创建模式对象,提高匹配效率,search match 均在内部进行了compile转换;

search(pattern, string[, flags]) 在字符串中查找模式 ,返回第一个查找的子串的MatchObject;

match(pattern, string[, flags]) 在字符串开头匹配模式 ,忽略字符串多余的尾部,若要全匹配,模式添加$,表示结尾;

split(pattern, string[, maxsplit=0]) 根据模式来分割字符串 ,如果模式包含圆括号,将在分割得到的子串之间插入括号中的内容,例如,re.split(‘o(o)’, ‘foobar’)的结果为[‘f’, ‘o’, ‘bar’],指定maxsplit最多分割多少次;
findall(pattern, string) 返回一个列表,其中包含字符串中所有与模式匹配的子串 ;
sub(pat, repl, string[, count=0]) 将字符串中与模式pat匹配的子串都替换为repl ;
escape(string) 对字符串中所有的正则表达式特殊字符都进行转义,即添加转义符 。

  • MatchObject的编组

以模式中的左括号序号为编号分组,整个模式为编组0,依次为1,2,3,,,99。
MatchObject方法:
group()返回编组对应子串;
start()end()span()分别返回对应编组开始,结束,范围的子串位置。

  • 替换的分组

在模式串中使用VERBOSE可以忽略模式串中的空格,制表,换行;

>>> re.sub(emphasis_pattern, r'<em>\1</em>', 'Hello, *world*!') 
>'Hello, <em>world</em>!' 
  • 非贪婪模式

对于所有的重复运算符,都 可在后面加上问号来将其指定为非贪婪的。

  • 模板系统
# templates.py 
import fileinput, re 
# 与使用方括号括起的字段匹配 
field_pat = re.compile(r'\[(.+?)\]') 
# 我们将把变量收集到这里: 
scope = {} 
# 用于调用re.sub: 
def replacement(match):    
	code = match.group(1)    
	try:  # 如果字段为表达式,就返回其结果:     
		return str(eval(code, scope))    
	except SyntaxError:  # 否则在当前作用域内执行该赋值语句 
	 # 并返回一个空字符串  
	 	return '' 
# 获取所有文本并合并成一个字符串: 
lines = [] 
for line in fileinput.input():    
	lines.append(line) 
text = ''.join(lines) 
# 替换所有与字段模式匹配的内容: 
print(field_pat.sub(replacement, text)) 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值