时间:2021年7月14日
作者:Afollower
分类: 学习记录/Python基础
正则表达式基础
1. 常见函数
1.1 Shell 通配符
from fnmatch import fnmatch, fnmatchcase
1. fnmatch
大小写不敏感[具体跟操作系统相关,windows不敏感]
print(fnmatch('test.txt', '*.Txt')) --> True
2. fnmatchcase
大小写敏感
print(fnmatchcase('test.txt', '*.Txt')) --> False
1.2 字符串匹配和搜索
str1.startwith(str2) : str1是否以str2开始
str1.endwith(str2) : str1是否以str2结束
str1.find(str2) -> int : 获取str2在str1中首次出现的位置,并返回int(没找到返回-1)
str1.replace(old, new [, max]) : 替换old为new(替换次数不超过max)
2. 正则表达式
2.1 正则基础
1.符号说明
- ‘^’ 匹配开头
- ‘$’ 匹配结尾
- […] 匹配…中的一个字符
- [^…] 匹配非…中的一个字符
- ‘re*’
*
匹配 >=0 个(re)表达式 - ‘re+’
+
匹配 >=1 个表达式 - ‘re?’
?
匹配 0/1 个表达式 - re{n} 匹配 n 个表达式
- re{n, } 匹配 >=n 个表达式
- re{n, m} 匹配 n~m 个表达式
- ‘|’ 或
2.特殊字符
- ‘.’ 匹配除’\n’外任何单个字符
- ‘\d’ [0-9]
- ‘\D’ [^0-9]
- ‘\s’ 匹配任何空白字符,包括空格、制表符、换页符等等。 [ \f\n\r\t\v]
- ‘\S’ 匹配任何非空白字符,[^ \f\n\r\t\v]
- ‘\w’ [A-Za-z0-9_]
- ‘\W’ [^A-Za-z0-9_]
3.在正则表达式中使用"()"
- 匹配的对象可以使用
group(num: int)
指定组号或者groups()
获取全部组 - 组:
- 在pattern中用 “()” 区分
(?g<name1>pattern)
返回的匹配组名为name1,可以在正则表达式中使用\g<name1>
调用
2.2 函数
pattern - 正则表达式 string - 匹配字符串
1.re.match(pattern, string, flags=0) -> None或者匹配的对象
match 从字符串开始匹配,符合返回结果,不符合返回None
2.re.search(pattern, string, flags=0) -> None或者匹配的对象
search 匹配整个字符串,返回符合的结果,无则返回None
3.检索和替换 re.sub(pattern, repl, string, count=0, flags=0) [subn(…)] -> str
- 前三个参数必填:
pattern-正则表达式 repl-替换格式 string-原字符串
count-替换次数
[subn -> str, 替换num]
4.预编译 re.compile(pattern[, flags])
预编译正则表达式, 供match 和 search 等函数使用
5.re.findall -> list
在字符串中找到正则表达式所匹配的所有子串,并返回一个列表
6.re.finditer -> Iterator
在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。
7.re.split(pattern, string[, maxsplit=0, flags=0]) -> list
按方法分割字符串并返回列表