第五章——字符串与正则表达式

正则表达式

简介
正则表达式是字符串处理的有力工具,比字符串自身提供的方法提供了更强大的处理功能
正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法,是计算机科学的一个概念。
一.常见函数
1.re.match
re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
函数语法:*re.match(pattern, string, flags=0)
2.re.search
re.search 扫描整个字符串并返回第一个成功的匹配。
函数语法: re.search(pattern, string, flags=0)
3.re.findall
在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。(注意: match 和 search 是匹配一次 findall 匹配所有)
函数语法:
findall(string[, pos[, endpos]])
常用元字符

  1. “.”:表示除换行符以外的任意字符。
  2. “[]”指定字符集
  3. “^”仅匹配字符串开头
  4. “$”仅匹配字符串结尾
  5. “\”后面可加不同字符表示不同的意义
  6. “*”匹配前一个字符0次或多次出现
  7. “+”匹配前一个字符一次或多次出现
  8. “?”匹配?之前0个或1个字符

例:

import re
s = '0x12x3x567x8xy'
re.findall(r'[0,9]',s)
print(re.findall(r'[0,9]',s))
# ['0','1','2','3','4','5','6,','7','8']
re.findall(r'\d',s)
print(re.findall(r'\d',s))
# ['0','1','2','3','4','5','6,','7','8']
re.findall(r'[x\d]',s)
print(re.findall(r'[x\d]',s))
# ['0','x','1','2','x','3','x','4','5','6,','7','x','8','x']
print(re.findall(r'[x\d]',s))
#['0', 'x', '1', '2', 'x', '3', 'x', '5', '6', '7', 'x', '8', 'x']
n = 'a ab abbbbb abbbbbxa'
re.findall(r'ab*',n)
print(re.findall(r'ab*',n))
#['a', 'ab', 'abbbbb', 'abbbbb', 'a']
re.findall(r'ab+',n)
print(re.findall(r'ab+',n))
#['ab', 'abbbbb', 'abbbbb']
re.findall(r'ab+?',n)
print(re.findall(r'ab+?',n))
#['ab', 'ab', 'ab']
re.findall(r'b{1,4}',s)
print(re.findall(r'b{1,4}',n))
#['b', 'bbbb', 'b', 'bbbb', 'b']
re.findall(r'x[0-9]x',s)
print(re.findall(r'x[0-9]x',s))
#['x3x', 'x8x']
re.findall(r'x[^3]x',s)
print(re.findall(r'x[^3]x',s))
#['x8x']


``4.compile 函数
compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。
语法: re.compile(pattern[, flags])
5.re.split
按照能够匹配的子串将字符串分割后返回列表,它的使用形式如下:
re.split(pattern, string[, maxsplit=0, flags=0])
match对象的主要方法
正则表达式对象的match方法和search方法匹配成功后返回match对象。match对象的主要方法有:
group():返回匹配的一个或多个子模式内容
groups():返回一个包含匹配的所有子模式内容的元组
groupdict():返回包含匹配的所有命名子模式内容的字典
start():返回指定子模式内容的起始位置
end():返回指定子模式内容的结束位置的前一个位置
span():返回一个包含指定子模式内容起始位置和结束位置前一个位置的元组。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值