如何在C#中提取指定文本间的ID并写入txt文件?
没问题,我来帮你搞定这个ID提取的需求!这里有几种不同的方法,你可以根据自己的使用习惯选择:
方法1:Python脚本(跨平台通用)
这个方式灵活度高,不管是Windows、Mac还是Linux系统都能运行。你只需要新建一个名为extract_ids.py的文件,把下面的代码复制进去:
import re # 打开输入文件和输出文件,指定编码避免乱码 with open('input.txt', 'r', encoding='utf-8') as infile, open('output.txt', 'w', encoding='utf-8') as outfile: # 正则表达式:匹配"id="之后、"amp"之前的内容,非贪婪模式避免匹配过多 id_pattern = re.compile(r'id=(.*?)amp') # 逐行读取输入文件内容 for line in infile: # 提取当前行所有符合规则的ID matched_ids = id_pattern.findall(line) # 把每个ID单独写入输出文件,每行一个 for id_str in matched_ids: outfile.write(f"{id_str}\n")
保存后,在终端里运行python extract_ids.py,就能在当前目录得到output.txt文件了。
方法2:命令行工具(Linux/Mac/WSL/Git Bash)
如果平时习惯用终端操作,一行命令就能直接完成提取:
# 用grep的Perl正则模式直接提取中间内容 grep -Po '(?<=id=).*?(?=amp)' input.txt > output.txt
解释一下:-P启用Perl兼容正则,-o只输出匹配的部分;(?<=id=)是反向预查(确保前面是id=),(?=amp)是正向预查(确保后面是amp),这样就能精准提取中间的ID,直接写入output.txt。
如果你的系统不支持-P参数,也可以用grep+sed组合:
grep -o 'id=.*amp' input.txt | sed 's/id=//;s/amp//' > output.txt
方法3:Notepad++图形界面操作(Windows用户友好)
要是你不想碰代码和命令行,用Notepad++也能轻松完成:
- 打开
input.txt文件 - 按下
Ctrl+H打开替换窗口 - 切换到「正则表达式」模式,勾选「匹配换行符」选项
- 在「查找目标」输入框中填入:
.*?id=(.*?)amp.*? - 在「替换为」输入框中填入:
$1\n - 点击「全部替换」,然后把修改后的内容另存为
output.txt就行
这个操作会把所有包含id=...amp的片段替换成对应的ID,并且每个ID单独占一行。
内容的提问来源于stack exchange,提问作者Brúnó Szubally




