Word VBA正则匹配:选择题一键转多列表格
前阵子帮一个常年整理题库文档的朋友处理选择题排版几十道题要全部改成“题号一列、ABCD四列”的多列表格。手动复制粘贴最折磨人的不是慢而是错题目串行、选项错位、题干被截断来回核对反而比从头排版更耗时。后来我用 Word VBA 写了个小宏选中题目区域一键生成多列表格几十道题几秒钟全部处理完。这篇内容就把完整代码、正则匹配思路和我在真实题库文档里踩过的坑一次讲清楚。不管你是老师整理试卷、培训专员梳理题库还是运营导数据只要手边有一批“题号 ABCD”格式的 Word 文档这套代码和排查思路都能直接参考。1. 为什么我要写这个宏一张选择题表格背后的重复劳动1.1 手动复制粘贴的痛点先还原一下大多数人的原始工作流。拿到一份 Word 版试卷比如3. 下列哪个选项是正确的 A. 选项一 B. 选项二 C. 选项三 D. 选项四最终要变成一张表格每一行是一道题第一列写题号第二列写题干后面四列分别是 A、B、C、D 的选项文字。看起来不难但题目一多就完全不是一回事。我朋友的场景是两百多道单选题。手动操作时你得先在目标位置插入一个 6 列表格再回到原文复制题干再依次复制四个选项。单道题花两分钟两百道就是六个多小时。更要命的是高重复动作带来的错位某一行少复制了一个选项后面所有行跟着错列这种错误肉眼很难一次发现往往要等别人用的时候才发现整张表的数据结构已经乱了。有人可能会说“复制到 Excel 里用分列”。我试过效果并不好。选择题原文里天然混着大量空格、顿号、全角点号分列符号本身就不统一。就算你把分隔符临时改成分号题干里如果出现“1、下列”“2、正确”之类的编号分列结果照样碎成一片。这些工具都假设文本本身有稳定分隔符但试卷文本偏偏是“人写的”不是给机器读的。1.2 真正该换的解法让程序按题目结构来解析后来我想明白一件事这类问题不该靠“排版操作”解决而该靠“文本解析”解决。因为题目文本本身就是有结构的题号行、选项行都有清晰的行首特征。只要程序能识别这些特征就能把一道题拆成“题号 题干 A/B/C/D 四段文字”然后再把这些拆好的字段写进表格。这就是 Word VBA 最典型的应用场景批量处理重复、有规则、人工做很蠢的文档操作。VBA 的优势在于它直接跑在 Word 里不用装额外软件不用把数据搬来搬去代码写完存成模板以后任何类似的文档都能复用。宏的核心工作只有三件事读选中范围的文本、按正则表达式拆分结构、把结果写入表格。下面就把这三件事逐步拆开讲。2. 让 Word“看懂”题目正则切题与选项定位2.1 没有现成 API就用正则解析文本Word VBA 里没有一个函数叫“识别所有选择题”但它的对象模型给了两个基础能力Range.Text能拿到任意区域里的纯文本VBScript.RegExp能在这个文本上做正则匹配。两者配合就能把结构提取出来。正则这个工具很多写代码的人可能不熟但在这类场景里特别好用。它的本质是描述“什么样的文本算我想要的行”。比如题目号行特征是“行首有数字 1 到 3 位后面跟一个点号或顿号”。选项行的特征是“行首有 A/B/C/D 大小写字母后面跟一个标点再跟选项内容”。只要把特征写对脏文本里的有效信息就能被精准捞出来。在 VBA 里创建一个正则对象的固定写法是Dim re As Object Set re CreateObject(VBScript.RegExp) re.Global True re.MultiLine True其中MultiLine True非常关键它让^和$不再只匹配整个文本的开头和结尾而是匹配每一行的开头和结尾。这样做的好处是我能按“逻辑行”做判断而不是把整段文本当成一个整体。2.2 两个核心正则模式我在实际代码里只用了两个核心模式一个切题号一个切选项。用途正则表达式能匹配到的示例匹配题号行^[ \t]*(\d{1,3})[.、:]12. 下列关于...、3、下列...、5下列...匹配选项行^[ \t]*([A-Da-d])[.、:][ \t]*(.)$A. 选项一、B、选项二、C选项三第一组正则里[ \t]*吃掉行首可能存在的空格和制表符\d{1,3}匹配 1 到 3 位数字然后匹配常见的点号、顿号、全角点号或半角冒号。为什么用字符类而不是只匹配一个点号因为真实文档里“3.”“3、”“3”都见过不统一覆盖就会漏题。第二组正则里([A-Da-d])捕获选项字母后面的[.、:]匹配选项标签后面的标点[ \t]*处理标签和内容之间的多余空格最后的(.)$捕获整行选项内容。$在 MultiLine 下表示行尾所以不会把下一行一起吃掉。2.3 题号切片把整段题目文本拆成单题拿到一整段题目文本之后不能直接逐行暴力扫因为题干可能是多行。更稳妥的方式是“以题号为界整段切块”把所有题号行的位置找出来两两之间就是一道完整题目。re.Pattern ^[ \t]*(\d{1,3})[.、:] Dim matches As Object Set matches re.Execute(srcText)Execute返回所有匹配位置每个匹配对象都有FirstIndex属性表示它在原文本中的起始位置。从第 0 个题号位置开始到第 1 个题号位置之前就是第 1 题以此类推。这一步做完每道题就变成一个独立字符串块后续所有处理都只针对单题块进行简单很多。3. 直接能用的宏代码与操作步骤3.1 完整代码下面这段是在我实际文档上跑通过的完整版本可以直接复制到 VBA 编辑器里使用。代码分两部分主过程负责读取文本、切分题目、生成表格辅助函数ParseOneQuestion负责把单个题目块拆成“题号、题干、A、B、C、D”六个字段。Sub ConvertQuestionsToOptionTable() Dim srcRange As Range Set srcRange Selection.Range.Duplicate If srcRange.Start srcRange.End Then MsgBox 请先选中要转换的题目范围。, vbExclamation Exit Sub End If Application.ScreenUpdating False 读取选中文本并统一换行符 Dim srcText As String srcText srcRange.Text srcText Replace(srcText, vbCrLf, vbLf) srcText Replace(srcText, vbCr, vbLf) srcText Replace(srcText, Replace(Chr(11), vbCr, vbLf), vbLf) 按题号切分题目 Dim re As Object Set re CreateObject(VBScript.RegExp) re.Global True re.MultiLine True re.Pattern ^[ \t]*(\d{1,3})[.、:] Dim qMatches As Object Set qMatches re.Execute(srcText) If qMatches.Count 0 Then MsgBox 没有识别到题号请确认题目以“1.”类似格式开头。, vbExclamation Exit Sub End If Dim items As Collection Set items New Collection Dim i As Long Dim startPos As Long Dim endPos As Long For i 0 To qMatches.Count - 1 startPos qMatches(i).FirstIndex 1 If i qMatches.Count - 1 Then endPos Len(srcText) Else endPos qMatches(i 1).FirstIndex End If Dim block As String block Mid(srcText, startPos, endPos - startPos) Dim parsed As Variant parsed ParseOneQuestion(block) items.Add parsed Next i 生成 6 列表格题号、题干、A、B、C、D Dim destRange As Range Set destRange ActiveDocument.Range destRange.Collapse Direction:wdCollapseEnd Dim tbl As Table Set tbl ActiveDocument.Tables.Add(destRange, items.Count 1, 6) tbl.Borders.Enable True tbl.Cell(1, 1).Range.Text 题号 tbl.Cell(1, 2).Range.Text 题干 tbl.Cell(1, 3).Range.Text A tbl.Cell(1, 4).Range.Text B tbl.Cell(1, 5).Range.Text C tbl.Cell(1, 6).Range.Text D Dim arr As Variant Dim questionText As String For i 1 To items.Count arr items(i) tbl.Cell(i 1, 1).Range.Text CStr(arr(0)) 题干里的换行替换为空格避免表格行高失控 questionText CStr(arr(1)) questionText Replace(questionText, vbLf, ) tbl.Cell(i 1, 2).Range.Text questionText tbl.Cell(i 1, 3).Range.Text CStr(arr(2)) tbl.Cell(i 1, 4).Range.Text CStr(arr(3)) tbl.Cell(i 1, 5).Range.Text CStr(arr(4)) tbl.Cell(i 1, 6).Range.Text CStr(arr(5)) Next i 简单列宽设置页面宽度约 595 磅 tbl.Columns(1).Width 40 tbl.Columns(2).Width 170 tbl.Columns(3).Width 75 tbl.Columns(4).Width 75 tbl.Columns(5).Width 75 tbl.Columns(6).Width 75 Application.ScreenUpdating True MsgBox 共生成 items.Count 行数据。, vbInformation Exit Sub ErrHandler: Application.ScreenUpdating True MsgBox 处理过程中出错 Err.Description, vbCritical End Sub Function ParseOneQuestion(ByVal blockText As String) As Variant 返回数组0 题号1 题干2 A3 B4 C5 D Dim ret(0 To 5) As Variant ret(0) ret(1) ret(2) ret(3) ret(4) ret(5) Dim re As Object Set re CreateObject(VBScript.RegExp) re.Global True re.MultiLine True 提取题号 re.Pattern ^[ \t]*(\d{1,3})[.、:] Dim qm As Object Set qm re.Execute(blockText) If qm.Count 0 Then ret(0) qm(0).SubMatches(0) End If 提取选项 re.Pattern ^[ \t]*([A-Da-d])[.、:][ \t]*(.)$ Dim om As Object Set om re.Execute(blockText) Dim optArr(0 To 3) As String Dim j As Long Dim letter As String Dim pos As Long For j 0 To om.Count - 1 letter UCase(om(j).SubMatches(0)) pos Asc(letter) - 65 If pos 0 And pos 3 Then optArr(pos) Trim(om(j).SubMatches(1)) End If Next j ret(2) optArr(0) ret(3) optArr(1) ret(4) optArr(2) ret(5) optArr(3) 题干部分删掉题号行、删掉全部选项行、压缩连续空行 re.Pattern ^[ \t]*\d{1,3}[.、:][^\r\n]*\r?\n? blockText re.Replace(blockText, ) re.Pattern ^[ \t]*[A-Da-d][.、:][^\r\n]*\r?\n? blockText re.Replace(blockText, ) re.Pattern (?:[ \t]*\r?\n){2,} blockText re.Replace(blockText, vbLf) re.Pattern ^\s blockText re.Replace(blockText, ) re.Pattern \s$ blockText re.Replace(blockText, ) ret(1) blockText ParseOneQuestion ret End Function这段代码有几个细节我想特别说明一下。第一为什么先Collapse到文档末尾再插入表格因为在 Word 对象模型里表格必须挂在一个 Range 上直接把 Range 定位到文档尾部插入位置表格就会生成在末尾并且自动补一个段落标记不会把最后一行的内容挤没。如果不想放在末尾你可以把destRange改成选区位置。第二为什么列宽设成 40、170、75、75、75、75正常的 A4 页面内容区宽度大概 595 磅这组数字加起来刚好 510 磅左右能留出右边距和表格线宽度打印预览不会超出页面。如果你的文档改了纸张方向或页边距这组数字要等比缩放。第三ParseOneQuestion里用Asc(letter) - 65把 A 到 D 映射成数组下标 0 到 3。这里我处理了大写和小写混用的情况UCase()统一转大写避免a.这种选项标签漏匹配。3.2 从粘贴到运行五步做完在 Word 里启用 VBA 宏第一次操作的人可能要找半天入口。完整路径是这样的打开 Word 文档按Alt F11打开 VBA 编辑器。左侧工程资源管理器里找到当前文档右键“插入”→“模块”会得到一个空白代码窗口。把上面代码整体粘贴进去按Ctrl S保存。如果文档是.docx格式Word 会提示宏无法保存在无宏文档里需要先另存为.docm格式。回到文档窗口用鼠标选中你要转换的题目区域。注意这一步不要把文档标题也选进去也不要留空白区域。按Alt F8在宏列表里选择ConvertQuestionsToOptionTable点击“运行”。运行完视觉上最直观的效果是原来几十行的文本变成了一张规整的 6 列表格每行一道题。我建议第一次使用时先复制文档副本在副本上跑一部分数据验证结果确认表格没问题再处理完整文档。3.3 表格生成位置和样式是怎么控制的代码里Set destRange ActiveDocument.Range加Collapse wdCollapseEnd表格会生成到文档最末尾。如果你希望表格出现在选中区域正下方可以把这两行替换成Dim destRange As Range Set destRange Selection.Range.Duplicate destRange.Collapse Direction:wdCollapseEnd为什么默认放在末尾因为在真实场景里原始题目文本一般要保留表格作为“转换结果”放在文末更方便后续单独截取或导出。你也可以在生成表格后直接把原题区域删掉那就等于做了一次“原地转置”这一步按个人偏好来。表格样式我只设置了tbl.Borders.Enable True没有给它套内置样式。原因是不同语言版本的 Word 对“表格样式名称”的翻译不一致直接指定Style Table Grid在某些版本里会报错。用Borders.Enable最通用出来的就是标准黑色边框网格线。如果你想要斑马纹或斜线表头可以在这个宏跑完后用 Word 的表格样式功能再统一刷一遍效果一模一样。4. 题库文档里的“不听话”格式容错与预处理4.1 常见干扰项与正则为什么挡得住或挡不住真实题库文档永远不会规规矩矩排好版等你处理。我整理了遇到过的几类干扰以及对应的处理结论。文档里的实际情况代码表现处理方式题号用“3、”或“3 ”而不是“3.”正则字符类已覆盖能正常识别无需额外处理选项标签用全角字母“”正则只匹配半角 A-D会漏预处理替换全角字母为半角选项标签和内容之间没有空格[ \t]*会匹配零个空格正常识别无需额外处理选项内容里含有“D开头”的词正则要求行首是字母且后跟标点不会误判无需额外处理题干里某行以“1.”开头切题时可能误当成新题需要人工确认或预处理删除多余编号选项文字太长换行到第二行第二行没有选项标签会被并入题干预处理把软回车换成硬回车前先合并续行全角字母这个问题是最常见的。很多从网页复制下来的试卷A、B、C、D 都变成了全角的 、、、视觉上看不出区别但正则匹配不到。解决办法是在读取文本后加一组替换srcText Replace(srcText, , A) srcText Replace(srcText, , B) srcText Replace(srcText, , C) srcText Replace(srcText, , D)这行代码不会破坏题干正文里的其他内容放心加。4.2 预处理三件套先统一再转换基于上面这些坑我总结出一个“预处理三件套”在任何文档上跑宏之前先做一遍命中率会高很多。第一把软回车Shift Enter 产生的换行符替换成硬回车。在 Word 里按Ctrl H查找内容输入^l替换为输入^p全部替换。软回车在正文里显示为向下的箭头它不会产生段落标记直接导致我的“按行匹配”失效。第二统一选项标点。虽然正则覆盖了点号、顿号、全角点号、冒号但如果遇到“A)“B】”这种怪标点还是会被漏掉。我的经验是只要文档里同时出现“A.”和“A、”两种格式就先手动把顿号全部替换成半角点号再跑宏。如果两种格式数量都很大也可以只保留原始格式让宏自动兼容但尽量别让同一种文档混三种以上标点。第三删掉题干里多余的行内编号。比如题干正文如果有多级编号行“1、方法如下”它很容易被题号正则匹配成一道新题。最简单的办法是跑宏之前用查找替换把这类小编号改成普通文字比如把“1、方法如下”改成“方法如下”保证每个题目块里只有开头的题号行有数字编号。4.3 遇到变形题怎么兜底还有一类文档选项不是 ABCD而是“正确 / 错误”的判断对错或者是“① ② ③ ④”这种序号选项。我的宏并不会报错只是匹配不到选项行最终表格里 ABCD 四列全是空的只有题干。这种情况不能硬扛我的兜底方案是先用上面宏跑一遍拿到题号和题干再在结果表格里手动补充选项。因为题目数量大时最耗时的其实是题号和题干的结构化选项单独处理反而简单。如果这类变形题比例很高建议不要改宏而是先做一个“统一选项格式”的预处理脚本。把“正确”替换成“A. 正确”、“错误”替换成“B. 错误”一次性做完之后再跑转表格宏效率和准确率都更高。5. 改几行代码让这个宏更适合你的工作流5.1 加一列答案很多试题文档在题目下方有“答案C”或“正确答案C”这样的文字。想把这列答案也提取进表格只需要三步。第一把表格列数从 6 改成 7表头加一列“答案”。第二在ParseOneQuestion里增加提取逻辑re.Pattern (?:答案|正确答案)\s*[:]\s*([A-Da-d]) Dim ansMatch As Object Set ansMatch re.Execute(blockText) If ansMatch.Count 0 Then ret(6) UCase(ansMatch(0).SubMatches(0)) Else ret(6) End If第三在主过程的写入循环里增加tbl.Cell(i 1, 7).Range.Text CStr(arr(6))。这样就能导出包含答案的完整表格后续做统计分析或者批量导入在线题库系统都更方便。5.2 长选项变成每题独立小表如果选项文字特别长一行一题的主表格会变得很拥挤单元格里全是密密麻麻的换行。这时候我推荐改成“一题一小表”的布局每个小题生成一个两行四列的表格第一行为题干合并单元格第二行四个单元格放 ABCD。这种布局在代码上的改动也不大。主过程里的Tables.Add要在题目循环内部执行并且不再把多个题目写进同一张表。实际效果更像“每一题的选项排成一行四列”视觉上比六列大表清爽很多。缺点是题目数量大时文档里的表格对象数量会变多后续继续编辑文档时可能比较卡所以我只在选项普遍超过 30 个字的文档里用这个方案。5.3 批量处理多个文档如果你手上不是一个文档而是一个文件夹里几十个同格式题目文档完全可以写一个调用宏的批量脚本Sub BatchConvertAllFiles() Dim folderPath As String folderPath D:\题库文件夹\ Dim fileName As String fileName Dir(folderPath *.docx) Do While fileName Dim targetDoc As Document Set targetDoc Documents.Open(folderPath fileName) targetDoc.Content.Select() ConvertQuestionsToOptionTable Dim saveName As String saveName folderPath Replace(fileName, .docx, -表格.docx) targetDoc.SaveAs2 FileName:saveName targetDoc.Close SaveChanges:False fileName Dir() Loop End Sub这个脚本逐个打开文件夹里的 Word 文档全选内容后运行转换宏再另存为带“-表格”后缀的新文件。原始文件原封不动保留比较安全。我实际使用时会先在两个文档上试跑确认无误后再全量执行。特别注意如果批量脚本在一个文档上出错后续文档不会自动继续建议在循环里加错误跳转或者干脆分成小批次跑。最后说点我的实操体会。这个宏不是那种“跑一次就永远不用管”的工具它更像一个可复用的文本处理模板。不同来源的题库文档格式差异其实比想象中更大第一次跑总会有一两道题识别不对这是正常现象。我的习惯是先在副本上跑一遍对照结果检查三样东西题号是否断档、题干是否被误删、选项是否串列。确认稳定之后再放批处理跑全量。脚本能省时间但结构检查永远不要省。另外一个比较实用的建议是把这段代码保存成独立的.bas文本文件或者直接放在个人宏工作簿里。这样不管打开什么文档都能随时把这段逻辑拉出来用。下次再遇到“把选项转成多列表格”的需求你就不用再开 Excel、再写分列公式、再对着错位的表格崩溃了。

相关新闻

春节祝福贺卡新年动画PPT模板:拆包改稿与批量生成全流程

春节祝福贺卡新年动画PPT模板:拆包改稿与批量生成全流程

简介:这是一款由锐普设计出品的春节祝福贺卡新年动画PPT模板,面向需要在春节、商务答谢或亲友问候等场合快速制作电子贺卡的职场人士与PPT初学者。模板将梅花飘落动画与倒挂福字等传统元素融入现代设计,兼顾专业度与易用性,新手也…

2026/10/15 20:31:06 阅读更多 →
代码静态验证工具实战:从选型到落地的完整指南

代码静态验证工具实战:从选型到落地的完整指南

接手过几个跑了两三年的业务系统之后,我对“代码静态验证工具”的看法发生了很大变化。以前总觉得它只是“锦上添花”的辅助检查,直到有一次线上故障让我彻底改观——某个老模块在用户并发不高的时候一切正常,可一旦某个异常分支被触发&#…

2026/10/15 20:31:06 阅读更多 →
1050亿担保+380亿滞销债:AI算力资本链的四层业务架构拆解

1050亿担保+380亿滞销债:AI算力资本链的四层业务架构拆解

一、事件与数字 10月前两周的两组消息值得放在一起读: 英伟达监管文件(截至7月26日财季):担保总敞口上限1085亿美元,其中1050亿对应OpenAI关联方在俄亥俄Pike County的数据中心租约,另有15亿美元入股开发商…

2026/10/15 20:30:05 阅读更多 →

最新新闻

目标检测后处理:IOU与NMS从原理到工程化实战

目标检测后处理:IOU与NMS从原理到工程化实战

做目标检测的朋友都知道,模型跑通只是第一步,真正决定最终效果上限的,往往是两段看起来很不起眼的计算:IOU与NMS。IOU负责衡量两个检测框到底重合成什么样,NMS负责把同一目标周围那些重复的、多出来的框“压”下去。无…

2026/10/15 21:19:30 阅读更多 →
Docker Compose部署WeKnora:从环境规划到上线运维的完整指南

Docker Compose部署WeKnora:从环境规划到上线运维的完整指南

我第一次帮人部署WeKnora时,对方给的服务器上已经跑了七八个业务,系统里Python和Node版本乱成一锅粥。当时我们几乎没有犹豫,直接用Docker部署WeKnora,把服务、数据库、缓存全部容器化隔离,不到半天就正常跑起来&#…

2026/10/15 21:19:30 阅读更多 →
500k长上下文实战:Codex与ChatGPT Work工作流重构指南

500k长上下文实战:Codex与ChatGPT Work工作流重构指南

直接说结论:从16k到128k,再到200k,然后跳到500k,这个数字看着只是“变大了”,但真正用起来你会发现,这根本不是同一个物种。我花了几个晚上把 Codex 和 ChatGPT Work 里的长上下文工作流重新跑了一遍&#…

2026/10/15 21:19:30 阅读更多 →
TxBENCH硬盘检测全攻略:性能测试、SMART健康与翻新盘识别

TxBENCH硬盘检测全攻略:性能测试、SMART健康与翻新盘识别

简介:TxBENCH 电脑及硬盘检测工具是一套面向电脑 DIY 爱好者、硬件评测人员及普通用户的 SSD 检测资源,覆盖基础读写测试、大文件拷入高级测试、安全擦除与驱动信息查看等核心功能,可帮助判断硬盘性能是否达到预期,并兼顾旧盘数据…

2026/10/15 21:19:30 阅读更多 →
Halcon+MFC工业模板匹配实战:从环境搭建到产线鲁棒部署

Halcon+MFC工业模板匹配实战:从环境搭建到产线鲁棒部署

简介:本资源是一个基于Halcon与MFC联合开发的模板匹配实战Demo,面向具备C基础和图像处理入门经验的Windows桌面应用开发者,解决工业视觉中目标定位、多尺度形状识别与灰度匹配等典型需求。项目完整实现形状匹配、形状缩放匹配及灰度匹配三类核…

2026/10/15 21:19:30 阅读更多 →
MySQL零基础入门:从安装到增删改查实战教程

MySQL零基础入门:从安装到增删改查实战教程

写这篇教程的初衷很简单——我见过太多人一上来就啃官方文档,结果被术语劝退;也见过不少人背了一堆命令,却连数据库都没装好。MySQL作为最流行的开源关系型数据库,它其实没有传说中那么难,难的是没人告诉你第一步该干嘛…

2026/10/15 21:18:29 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →