PHP与C#.NET同正则表达式输出不一致问题求助
搞定PHP与.NET正则匹配结果不一致的问题
嘿,我一眼就看到问题所在啦!你踩了PHP和C#正则表达式的一个常见差异坑:
PHP里的preg_match函数要求正则表达式必须用分隔符(你用的是/)包裹,但C#的Regex类完全不需要这个分隔符!你现在把PHP的分隔符/也写到C#的pattern字符串里了,相当于要匹配带首尾斜杠的字符串(比如/S:/),而你的目标字符串是"S:",自然匹配失败,输出0。
修正后的C#代码
只需要去掉pattern前后的/就行:
using System; using System.Text.RegularExpressions; public class Example { public static void Main() { int countRow = 0; string p= "S:"; // 移除了PHP风格的/分隔符 string pattern = @"^([A-Z]:+)$"; if(Regex.IsMatch(p, pattern)){ countRow++; } Console.WriteLine(countRow); // 现在输出会是1,和PHP一致 } }
额外小提示
- PHP的正则必须带分隔符,你的PHP代码写法是完全正确的;
- C#正则直接写匹配规则即可,不需要额外的包裹符号,这是两种语言正则实现的核心差异之一。
这样修改后,两边的countRow都会输出1啦!
内容的提问来源于stack exchange,提问作者peichen
相关产品推荐
相关产品推荐

