You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修复匹配INF文件注释的.NET正则表达式:方括号配对错误

修正INF文件注释匹配的.NET正则表达式

INF文件注释核心规则

  • 注释以分号;开头,延续至该行末尾
  • 双引号包裹的字符串内的分号,不会触发注释
  • 方括号[]包裹区块内的分号,不会触发注释;分号前若有未闭合的左括号,也不会触发注释
  • 仅双引号字符串内允许出现未闭合或嵌套的方括号

原正则的问题

你之前的正则把左方括号和双引号错误配对,导致本该被忽略的字符串/方括号内的分号被误判为注释起始,比如测试输入里第一个分号就被错误匹配了。

修正后的正则表达式

(?:^|(?<=\n))(?:(?:[^;"\[\n]|"(?:[^"\\]|\\.)*"|\[(?:[^\]\n]|\[(?:[^\]\n]*\])?)*\])*);.*?(?:\n|$)

正则逻辑说明

  1. (?:^|(?<=\n)):定位到行的起始位置(包括换行后的新行开头)
  2. (?:(?:[^;"\[\n]|"(?:[^"\\]|\\.)*"|\[(?:[^\]\n]|\[(?:[^\]\n]*\])?)*\])*:循环匹配所有不会触发注释的内容,分三个独立分支处理:
    • [^;"\[\n]:匹配普通字符(排除分号、引号、括号、换行)
    • "((?:[^"\\]|\\.)*)":匹配双引号字符串,支持转义双引号(比如\"),确保字符串内的所有内容都被跳过
    • \[(?:[^\]\n]|\[(?:[^\]\n]*\])?)*\]:匹配方括号包裹的区块,支持嵌套方括号,确保括号内的分号不会被误判
  3. ;.*?(?:\n|$):匹配真正的注释部分,从第一个不在字符串/方括号内的分号开始,到行尾或换行结束

用你的测试输入验证:A semicolon [inside";] square brackets" does not initiate a comment; but outside - it does.,修正后的正则会正确跳过字符串和方括号内的分号,仅匹配第二个分号开头的; but outside - it does.部分。

内容的提问来源于stack exchange,提问作者Pavel Stepanek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 23:15:34