正则表达式
-
re.match(匹配规则,被匹配字符串)
从被匹配字符串开头进行匹配,匹配成功返回匹配对象,匹配不成功返回空。
import re
s = "python java c++"
result = re.match("python", s)
print(result) #<re.Match object; span=(0, 6), match='python'>
print(result.span()) #(0, 6)
print(result.group()) #python
-
search(匹配规则,被匹配字符串)
搜索整个字符串,找出匹配的。从前向后,找到第一个后,就停止,不会继续向后。
s = "1python java c++"
result = re.search("python", s)
print(result) #<re.Match object; span=(1, 7), match='python'>
print(result.span()) #(1, 7)
print(result.group()) #python
-
findall(匹配规则, 被匹配字符串)
匹配整个字符串,找出全部匹配项
s = "1python java c++python"
result = re.findall("python", s)
print(result) #['python', 'python']
元字符匹配
| 字符 | 功能 |
|---|---|
| . | 匹配任意一个字符除了(\n) |
| [] | 匹配[]中的列举的字符 |
| \d | 匹配数字,即0-9 |
| \D | 匹配非数字 |
| \s | 匹配空白,即空格,tab键 |
| \S | 匹配非空白 |
| \w | 匹配单词字符,即a-z,A-Z,0-9 |
| \W | 匹配非单词字符 |
数量匹配:
| 字符 | 功能 |
|---|---|
| * | 匹配前一个规则的字符出现0至无数次 |
| + | 匹配前一个规则的字符出现1至无数次 |
| ? | 匹配前一个规则的字符出现0次或1次 |
| {m} | 匹配前一个规则的字符出现m次 |
| {m,} | 匹配前一个规则的字符至少出现m次 |
| {m,n} | 匹配前一个规则的字符出现m到n次 |
边界匹配:
| 字符 | 功能 |
|---|---|
| ^ | 匹配字符串开头 |
| $ | 匹配字符串结尾 |
| \b | 匹配一个单词的边界 |
| \B | 匹配非单词边界 |
分组匹配:
| 字符 | 功能 |
|---|---|
| | | 匹配左右任意一个表达式 |
| () | 将括号中字符作为一个分组 |
递归
import os
def test():
print(os.listdir("E:/test")) #['1.txt', '2.txt', 'a', 'b']
# print(os.path.isdir("E:/test/a")) #判断是否为文件夹
# print(os.path.exists("E:/test")) #判断指定路径是否存在
def get_from(path):
#从指定的文件夹中获取文件夹列表
list = []
if os.path.exists(path):
for f in os.listdir(path):
new_path = path + "/" + f
if os.path.isdir(new_path):
list += get_from(new_path)
else:
list.append(new_path)
else:
print(f"指定的目录{path},不存在")
return []
return list
if __name__ == '__main__':
print(get_from("E:/test"))
&spm=1001.2101.3001.5002&articleId=135727400&d=1&t=3&u=9df0773825db48358acfb3058d6f1f7b)
1318

被折叠的 条评论
为什么被折叠?



