正则表达式知识
1.原子
- 普通字符作为原子
- 非打印字符
- 通用字符
- 原子表
普通字符作为原子
import re
pattern = 'yes'
string = 'heyesword'
result = re.search(pattern,string)
print(result)
非打印字符作为原子
常用的非打印字符\n,\t
import re
pattern = '\n'
string = '''heyesword'
aaaaaaaa'''
result = re.search(pattern,string)
print(result)
通用字符作为原子
常用的通用字符如下:
符号 | 含义 |
---|---|
\w | 匹配任意字母数字下划线 |
\W | 匹配任意除字母数字下划线 |
\d | 匹配任意十进制数 |
\D | 匹配任意除十进制数 |
\s | 匹配空白字符 |
\S | 匹配非空白字符 |
import re
pattern = '\w\python\w'
string = 'wepythoned'
result = re.search(pattern,string)
print(result)
原子表作为原子
原子表可以定义一组地位平等的原子,匹配的时候会取任意原子表中的原子匹配,原子表由[]表示
import re
pattern = '\w\python[abc]'
string = 'wepythoned'
result = re.search(pattern,string)
print(result)
元字符
元字符就是正则中一些特殊含义的字符,比如重复n次前面的字符等。
常见的元字符如下表:
符号 | 含义 |
---|---|
. | 匹配任意除换行符的字符 |
^ | 匹配开始位置 |
$ | 匹配结束为止 |
* | 匹配0次1次或多次 |
? | 匹配0次或1次 |
+ | 匹配1次或多次 |
{n} | 匹配前面的原子n次 |
{n,} | 匹配>=n 次 |
{n,m} | 匹配n<=x<=m次 |
| | 模式选择符 |
() | 模式单元符 |
任意匹配字符
.属于任意匹配字符
边界限制元字符
^和$属于边界限制元字符
限定符
*,?,+,{n},{n,},{n,m}属于限定符
模式选择符 |
模式单元符()
模式修正
常见的模式如下:
符号 | 含义 |
---|---|
I | 匹配忽视大小写 |
M | 多行匹配 |
L | 本地化识别 |
U | 根据unicode字符及解析字符 |
S | .可以匹配换行符 |
贪婪模式和懒惰模式
import re
pattern1 = 'p.*y'#贪婪模式
pattern2 = 'p.*?y'#懒惰模式
string = 'wephppythonedy'
result1 = re.search(pattern1,string)
result2 = re.search(pattern2,string)
print(result1)
print(result2)
result1:<_sre.SRE_Match object; span=(2, 14), match=’phppythonedy’>
result2:<_sre.SRE_Match object; span=(2, 7), match=’phppy’>
正则常用函数
- 1 re.match(pattern,string)
- 2 re.search(pattern,string)
- 3 re.compile(pattern).findall(string)
- 4 re.sub(pattern,rep,string,max) 字符串替换