C#中使用正则表达式为不含OBSBOT的句子添加前缀
在C#中用正则表达式实现条件添加前缀(避免重复)
要解决仅给不含OBSBOT的句子添加前缀,已包含的句子不修改的问题,核心是用正则的负向预查精准匹配目标行,同时开启多行模式支持多句子输入。
正则方案
使用以下正则模式和替换规则:
- 正则模式:
^(?!.*OBSBOT).+$ - 替换字符串:
OBSBOT $0
模式解释:
^:匹配每行的开头(需配合Multiline选项生效)(?!.*OBSBOT):负向预查,断言当前行首之后的任意位置都不存在OBSBOT字符串.+$:匹配整行内容(直到行尾)$0:替换时引用匹配到的整行原内容
C# 代码实现
using System.Text.RegularExpressions; string input = @"UVC to HDMI Adapter OBSBOT HQ Mic Remote controller for Tiny 4K HQ Mic OBSBOT HQ OBSBOT Mic"; // 正则规则:匹配不含OBSBOT的行,在开头添加前缀 string regexPattern = @"^(?!.*OBSBOT).+$"; string replacementText = "OBSBOT $0"; // 开启Multiline选项,让^和$匹配每行的首尾而非整个字符串的首尾 string output = Regex.Replace(input, regexPattern, replacementText, RegexOptions.Multiline);
验证结果
执行后输出与预期完全一致:
OBSBOT UVC to HDMI Adapter
OBSBOT HQ Mic
OBSBOT Remote controller for Tiny 4K
HQ Mic OBSBOT
HQ OBSBOT Mic
重复添加问题的原因
之前的写法未加入(?!.*OBSBOT)负向预查,导致不管行内是否已有OBSBOT,都会匹配行首并添加前缀,最终出现重复内容。
内容的提问来源于stack exchange,提问作者Elgin Maksim
相关产品推荐
相关产品推荐

