C#正则表达式引擎不起作用

我正在做最简单的regex.match,我给Regex.Match一个字符的模式,它根本不返回匹配,我确保输入文本包含很多字符?

我检查了所有的使用情况。

它非常奇怪。

任何帮助,将不胜感激!

谢谢。

编辑:

我的样本是“做任何类型的匹配根本就不工作”返回一个空匹配

Match m=Regex.Match(@"c","abcdc"); 

代码编译没有错误,所以为什么没有匹配!!

编辑:根据您的编辑,问题是您正在使用不正确的参数。 您需要切换顺序并提供输入 (字符串源以查找匹配) 然后模式 (要匹配的内容)。

实际上,此智能感知器为您指定了此顺序,如下图所示:

正则表达式参数排序

它通常有助于匹配IntelliSense建议的命名或参考它以确保传入正确的项目。


使用的角色是什么? 你有可能尝试使用一个实际上是元字符的字符 ,它在正则表达式中具有特殊含义。

例如:

 string result = Regex.Match("$500.00", "$").Value; 

以上不会返回任何内容,因为$是需要转义的元字符:

 string result1 = Regex.Match("$500.00", @"\$").Value; // or string result2 = Regex.Match("$500.00", "\\$").Value; // or string result3 = Regex.Match("$500.00", Regex.Escape("$")).Value; 

有关需要转义的常见元字符列表,请查看Regex.Escape文档 。

您的示例中的参数顺序错误:

 Match m=Regex.Match(@"c","abcdc"); 

这段代码意味着你试图在字符串“c”中找到字符串“abcdc”,反过来尝试它应该更好,即:

 Match m=Regex.Match("abcdc", "c"); 

此外,您的代码编译的事实并不意味着它必然会找到匹配…

这是Regex.Match的文档 。

我保证,正则表达式有效。 我已经使用过很多次了。

这将把字符串"d"放在变量s

 string s = System.Text.RegularExpressions.Regex.Match("asdf", "d").Value; 

如果这不起作用,也许你有一些奇怪的文化背景会影响字符串的比较? System.Globalization.CultureInfo.CurrentCulture.DisplayName是否返回预期值?

我建议您使用RegExBuddy。 这样你可以检查你的正则表达式与测试文件,并确保他们应该返回一些东西,你没有弄乱你的表达。

http://www.regexbuddy.com/