show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 上次了解了三个re的函数
- search
- findall
- finditer
- 三个元字符
.
任意非换行字符^
匹配 开头位置$
匹配结束位置
- 这开始和结束
- 刚好和vim跳转一致
- 你说巧不巧
- 还有什么 元字符 呢?
-
贪婪匹配
-
- 可能匹配着尽可能多的字符
-
-
这如何理解?
import re
text = "cab celebrate banana abort"
pattern = r"a.*b"
matches = re.findall(pattern, text)
print(matches)
- 结果
- .* 由于使用了贪婪匹配
- 贪到了 足够多的字符
- 总共就一个匹配
- 如何理解greedy呢?
- 因为hungry
- 所以想吃的多 greedy
- 可以设置为非贪婪吗?
- 如果*是贪婪的
- *?就是非贪婪的
- 尝试修改代码
- 非贪婪后
- 确实不止一个了
- 除了*?之外
- +? 和 ??是什么意思呢?
-
- 匹配着0到任意多个字符
-
- 匹配着1到任意多个字符
- 具体代码如何?
- 结果
- 理解
- 可以非贪婪吗?
- 结果
- 不包含cab中的ab
- 因为+至少一个字符
- 是什么意思呢?
- a.?b代表
- a和b之间有0个或1个字符
- 具体应用呢?
- 结果
- abb入选
- 说明目前是贪婪模式
- 改成非贪婪模式后
- ab入选
- 而不是abb
- 还有什么关于字符数量的描述吗?
- 大括号{}
- {m,n}
- 从m到n个重复 贪婪
- {m,n}?
- 从m到n个重复 非贪婪
- {m,n}
- m、n都包括吗?
- .{0,3}
- 0-3个任意字符
- 如何匹配0个重复的ab呢?
- 使用非贪婪后
- 可以匹配ab
- {0,3}中可以省略0吗?
- 省略0后
- 效果不变
- 说明前面的0可以省略
- 可以省略后面的3吗?
- 结果改变
- {,3} 0到3个重复
- {,} 0到任意多个重复
- 就是*
符号 | 对应关系 |
---|---|
* | {,} |
+ | {1,} |
? | {0,1} |
- 以上为贪婪匹配
符号 | 对应关系 |
---|---|
*? | {,}? |
+? | {1,}? |
?? | {0,1}? |
- 以上为非贪婪匹配
- 这次了解了正则表达式的重复次数
- {m,n} 重复m到n次
-
- 零到任意多次
-
- 一到任意多次
- ? 零次或一次
- 还了解了 贪婪和 非贪婪
- 贪婪匹配 尽可能多的字符
- 非贪婪匹配 尽可能少的字符 后面加?
- 正则表达式还有什么可以研究的呢?🤔
- 下次再说👋🏻