一、结论先行:这一档只认字面量

能一次把固定字符串的所有出现处全部换掉,不能按「任意数字」「任意大写字母」这类模式去匹配。你在查找框里敲进去的每个符号,都被当成它自己那一个字符,逐字比对,不做任何解释。

这就是「正则表达式没反应」的原因:正则的那套写法在这里不是规则,而是文本。查找框里的点号加星号,面板真的去找「点号后面跟一个星号」这几个字符,绝大多数文本里根本没有这串字符,命中数自然为零。这一步在浏览器里完成,文件不上传到服务器。

二、字面量匹配和模式匹配差在哪

字面量匹配只有一条动作:把查找串与文本里每一处等长的片段逐字符比一次,完全相同才算命中,命中就整段换成替换串。它没有「量词」的概念,也就没有「重复几次」「任一字符」「或」这些语义。

模式匹配则是先把你填的内容编译成一条规则,再拿规则去套文本。规则里的元字符要转义才能表示它自己,这也正是普通用户最容易踩反的地方:在字面量框里写元字符等于写它本人,在正则里写元字符等于写一类字符。两个框共用一套输入界面,行为完全不同,看起来就像「没反应」。

三、几种典型填法会出什么结果

查找框里填的内容面板怎么理解实际效果
合同编号就是这四个字每一处「合同编号」都被换掉,并给出命中数
2024-01-05整串原样匹配只命中写法完全一致的那串日期
点号加星号两个普通符号命中为零,不等于「匹配任意内容」
方括号里加大写字母五个普通字符命中为零,不等于「匹配任一大写字母」
竖线隔开的两个词整串原样匹配只命中真的带竖线的文本
空格后接编号空格也算字符前面没有那个空格的位置一律不命中

四、分场景怎么选

  • 把旧产品名、旧部门名统一换成新写法:直接用这一档,一次全局替换,命中数就是你要核对的那个数。
  • 把标点从全角换成半角,或反之:也直接用这一档,一次只处理一枚符号,比批量手改稳。
  • 要把所有数字换成星号、把括号里的内容整体删掉:这一档给不了,去「TXT处理」那个本地页把查找替换切成正则模式,它用的是 JavaScript 那套正则语法。
  • 只想确认两版文本差了多少行:替换不是比对的活,用「文本比较」逐行配对着看。
  • 要替换的行正好是空行:别绕路去填替换,直接跑「删除空行」这一档,连只有空格的行一起删。

五、按这个顺序排查:替换为什么没命中

  1. 先看有没有把正则写法当规则用,这是最常见的一条,见上一节的对照表。
  2. 再看符号的中英文写法,同一个冒号、括号各有两枚字符,填错一种就是零命中。
  3. 再看空格,行首、行中多一个空格,查找串就对不上了。
  4. 再看是不是把整段当一串,跨行的内容在这里匹配不到,替换不越过换行去拼句子。
  5. 最后用命中数收尾:替换后看面板给的命中数是不是在你的预期范围内,为零就说明填的那串字符在文本里根本不存在。

六、别做这几件事

  • 别在这个框里试正则:任何元字符都会被按字面处理,试到花括号方括号全用上也不会有结果,需要模式就换「TXT处理」。
  • 别一次替换一串同音词:这一档是全局替换,替换串里如果又包含查找串,会把结果反复卷进去,拆成几小步分别做。
  • 别用它删空行:空行不是普通字符能干净表达的,跑「删除空行」那一档才对。
  • 别把命中的数字当成正确性的证明:命中数只说明换了多少处,不说明换对没对,改完再比一次更稳。

常见问题

问:同样一段正则,为什么在这个页面一点反应都没有?
答:因为这一档按字面量比对,正则符号被当普通字符,匹配不上任何内容;要正则就去「TXT处理」把查找替换切到正则模式,那一档同样在浏览器里完成。

问:替换完之后怎么快速确认自己改了几处?
答:看面板给出的命中数,它就是这次被替换的处数;再进一步可以把改前改后两段丢进「文本比较」跑一次逐行配对,看差异行数是不是等于你预期的那几行。

问:能不能只替换第一处,或者只替换其中几行?
答:不能,这一档只有全局替换一个动作;想控制范围,就把要改的那一段单独粘进来替换,改完再拼回去。

本站入口

入口是办公工具聚合页里的 文本查找替换 面板,粘文本、填两个框,出替换后的文本与命中数,这一步在浏览器里完成。

需要按模式批量改写就去 TXT处理 这个本地页勾选正则,改完想核对改动量可以用 文本比较。