├── README.md
└── 两次正则搜索5.py
/README.md:
--------------------------------------------------------------------------------
1 | 1 本程序用于搜索两遍正则
2 | 比如你希望找一个文档里, 包含123 又包含789的文本文档. 123和789的位置不固定,可能是任何位置. 就可以用这个程序.第一遍输入123,第二遍搜索789.
3 | 原理是先搜索路径下包含123的文档, 然后在已经搜到的这些文档下,再次搜索包含789的文档.
4 | 2 两次正则搜索4会生成一个pdf文件,但是这个代码遇到中文路径会闪退,所以一般两次正则搜索3.exe就够用. 当时生成pdf的目的是为了方便打开结果的txt查看.而网页版不可以打开一个外部程序,txt倒是可以查看.
5 | 如果大佬们知道为啥这个pdf代码不支持中文路径,麻烦告知一下
6 |
7 | 正则怎么用可以用chatgpt生成对应的正则表达式.另外直接输入内容就可以搜索对应的内容.
8 | 比如搜索123,可以直接输入123. 或者\b123\b 这个\b是边界的意思.就是把123当做一个词汇来搜. 具体复杂的还是推荐用chatgpt生成正则表达式来搜索.
9 |
10 | ---------------------------------------------------------
11 |
12 | 更新说明:
13 | 两次正则搜索5:
14 | 现在路径可以增加很多条,用英文逗号分割,比如
15 | C:\新建文件夹,C:\Users
16 | 增加win7版本
17 |
--------------------------------------------------------------------------------
/两次正则搜索5.py:
--------------------------------------------------------------------------------
1 | import os
2 | import re
3 | from tqdm import tqdm
4 | from datetime import datetime
5 |
6 |
7 | def generate_html_file(result_list):
8 | """
9 | 生成包含搜索结果的 HTML 文件
10 | """
11 | with open("search_result.html", 'w',encoding="utf8") as f:
12 | title = "Search Result"
13 | f.write(f"\n\n
\n\n{title}\n\n\n")
14 | f.write(f"{title}
\n")
15 | for file in result_list:
16 | f.write(f"{file}
\n")
17 | f.write("\n\n")
18 | print(f"结果已保存至 search_result.html 中。")
19 |
20 |
21 | # 定义文件名和路径
22 | filename = "search_result.txt"
23 | path = ""
24 |
25 |
26 | while True:
27 | # 输入扩展名和路径
28 | extensions = input("请输入要搜索的扩展名(用英文逗号分隔 例如 txt,xml):")
29 | extension_list = extensions.split(',')
30 |
31 |
32 | paths = input("请输入文件路径(用英文逗号分隔):")
33 | path_list = paths.split(',')
34 |
35 |
36 | # 输入首个正则表达式和次个正则表达式
37 | regex_1 = input("请输入首个搜索文本,支持正则表达式:")
38 | regex_2 = input("请输入次个搜索文本,支持正则表达式:")
39 |
40 | # 遍历路径及子路径,获取满足扩展名条件的文件列表
41 | file_list = []
42 |
43 | # 遍历每个路径及其子路径,获取满足扩展名条件的文件列表
44 | for path in path_list:
45 | for root, dirs, files in tqdm(os.walk(path), desc="正在遍历文件..."):
46 | for file in files:
47 | if file.endswith(tuple(extension_list)):
48 | file_list.append(os.path.join(root, file))
49 |
50 |
51 | result_list = []
52 | # 对满足扩展名条件的文件进行内容搜索
53 | for file in tqdm(file_list, desc="正在搜索文件..."):
54 | with open(file, 'r') as f:
55 | content = f.read()
56 | if re.search(regex_1, content) and re.search(regex_2, content):
57 | result_list.append(file)
58 |
59 | if result_list:
60 | # 输出搜索到的文件列表
61 | print("以下文件包含搜索到的内容:")
62 | for file in result_list:
63 | print("-", file)
64 |
65 | # 将搜索结果追加到文件,并同时保存为逆序格式
66 | now = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
67 | with open(filename, 'a') as f:
68 | f.write(f"\n\n搜索时间:{now}\n")
69 | for file in reversed(result_list):
70 | f.write(f"{file}\n")
71 |
72 | # 生成包含搜索结果的 HTML 文件
73 | generate_html_file(result_list)
74 |
75 | else:
76 | print("未找到任何符合条件的文件。")
77 |
78 | # 询问是否继续搜索
79 | choice = input("按回车键继续,退出请关闭窗口:")
80 | if choice.upper() == 'N':
81 | break
82 |
--------------------------------------------------------------------------------