C#正则表达式:匹配不以1-2个空白+MINNIE结尾的字符串
解决C#正则匹配问题:排除特定结尾的字符串
问题分析
你需要匹配的格式为:pippo + 一个或多个空格 + 数字 + 1-2个空格 + pluto + 一个或多个空格 + 数字 + 1-2个空格,但需排除以1-2个空格+MINNIE(不区分大小写)结尾的字符串。
你之前的正则无效,核心问题在于:
- 负向预测断言仅检查紧跟的
MINNIE,未包含前面的1-2个空格,也未处理大小写不敏感的需求 - 未通过边界锚定确保匹配整个字符串,容易出现部分匹配的误判
正确的正则表达式
方式1:使用RegexOptions.IgnoreCase参数
string pattern = @"^(pippo\s+\d+\s{1,2})(pluto\s+\d+\s{1,2})(?!\s{1,2}MINNIE)$"; Match match = Regex.Match(inputString, pattern, RegexOptions.IgnoreCase);
方式2:正则内嵌入大小写不敏感标记
如果不想依赖外部参数,可在正则开头添加(?i)标记:
string pattern = @"(?i)^(pippo\s+\d+\s{1,2})(pluto\s+\d+\s{1,2})(?!\s{1,2}MINNIE)$"; Match match = Regex.Match(inputString, pattern);
关键细节说明
^和$:锚定字符串首尾,确保匹配的是完整符合格式的内容,避免部分匹配导致的错误(?!\s{1,2}MINNIE):负向预测断言,检查当前位置后不会出现1-2个空格+MINNIE的组合,结合大小写不敏感规则,精准排除目标结尾的字符串\s{1,2}:简洁写法替代(\s){1,2},功能一致但更符合正则规范
测试示例
- 匹配成功的字符串(符合格式且不以指定内容结尾):
pippo 123 pluto 456
pippo 789 pluto 012 (空白以空格表示) - 匹配失败的字符串(以1-2个空格+MINNIE结尾):
pippo 123 pluto 456 minnie
pippo 789 pluto 012 MINNIE
内容的提问来源于stack exchange,提问作者CodeIT
相关产品推荐
相关产品推荐

