show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 上次了解了正则表达式的重复次数
- {m,n} 重复m到n次
-
- 零到任意多次
-
- 一到任意多次
- ? 零次或一次
- 还了解了 贪婪和 非贪婪
- 贪婪匹配 尽可能多的字符
- 非贪婪匹配 尽可能少的字符 后面加?
- 正则表达式
- 还有什么可以研究的呢?🤔
- \\
- 转义字符
- 转义序列
- 想要搜索元字符
- 就需要使用\进行转义
- 想要搜索a*b
- 需要对*进行转义
import re
text = "a*b a\\\\b celebrate banana abort"
pattern = r"a\*b"
matches = re.findall(pattern, text)
print(matches)
- 可以对于*进行转义
- 设置模式a\*b
- 查找到 a*b
- 如果模式是a\\*b 呢?
import re
text = "a*b a\\\\b celebrate banana abort"
pattern = r"a\\*b"
matches = re.findall(pattern, text)
print(matches)
- 结果
- * 没有被转义
- 含义为 前面的字符 (\)
- 重复了0到任意多次0
- []
- 暗示的是
- 中括号里面的字符都可以
import re
text = "cab boat celebrate banana abort collect"
pattern = r"[abc]o"
matches = re.findall(pattern, text)
print(matches)
- 运行结果
- 中括号里面的都可以
- 中括号里 彼此之间是或者的关系
- 有一个就行
import re
text = "cab boat celebrate banana abort collect"
pattern = r"[abc]*o"
matches = re.findall(pattern, text)
print(matches)
- 结果
- [abc]*
- [abc] 中任意字符
-
- 重复 零到任意多次
- 如果改成非贪婪呢?
import re
text = "do cab boat celebrate banana abort collect"
pattern = r"[abc]*?o"
matches = re.findall(pattern, text)
print(matches)
- 非贪婪效果
- ^所代表的complement set
- 如何理解
- complement set
- 指的是 补集
- 列表中的元素 不被选择
- 不在列表中的元素 才被选择
- abc不能被选择
- abc以外的可以被选择
- 如果去掉非贪婪的?呢
import re
text = "do cab boat celebrate banana abort collect"
pattern = r"[^abc]o"
matches = re.findall(pattern, text)
print(matches)
- 运行结果
-
|在python中是
- 位运算或
-
此处处理或者的情况
import re
text = "do cab boat celebrate banana abort collect"
pattern = r"cab|bo"
matches = re.findall(pattern, text)
print(matches)
- 结果
- 想要cabt或者bot怎么写呢?
import re
text = "do cab boat celebrate banana abort collect"
pattern = r"car|bor"
matches = re.findall(pattern, text)
print(matches)
- car 或者 bor
- 可以理解为
- ca 或 bo
- 后面跟上r
- 吗?
import re
text = "do cab boat celebrate banana abort collect"
pattern = r"(ca|bo)r"
matches = re.findall(pattern, text)
print(matches)
- 结果
- 搜索到的是
- 后面跟着r的
- ca 或者 bo
- 如何理解小括号呢?
- 小括号
- 小括号 里面的是 子表达式
import re
text = "do car boat celebrate banana abort collect"
pattern = r"(ca|bo)r"
matches = re.finditer(pattern, text)
for match in matches:
print(match)
- 查找到 2个匹配
- 这次了解了转义字符\
- 转义字符 可以 原样引用 元字符
- 还了解了 三种括号
符号 | 含义 | 例子 | 匹配 | 不匹配 |
---|---|---|---|---|
小括号 | 括号内对应匹配的内容 | c(ar) | car中的ar | bar中的ar |
中括号 | 括号里面的字符都是可能出现的 | c[ab] | ca | cc |
大括号 | 控制范围 | c{2,3} | cc、ccc | c |
- 正则表达式还有什么好玩的呢?🤔
- 下次再说👋🏻