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

时间:2010-01-19 00:45:48

标签: c# regex

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

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

它非常奇怪。

任何帮助将不胜感激!

感谢。

编辑:

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

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

代码编译时没有错误,为什么NO MATCHING !!

4 个答案:

答案 0 :(得分:11)

编辑:根据您的编辑,问题在于您无法使用参数。您需要切换订单并提供输入(字符串来源以查找匹配项)然后 模式(要匹配的内容)。

实际上,IntelliSense为您指定了此顺序,如下图所示:

Regex parameters ordering

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


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

例如:

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 documentation

答案 1 :(得分:4)

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

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

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

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

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

这是the documentation for Regex.Match

答案 2 :(得分:3)

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

这会将字符串"d"放入变量s

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

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

答案 3 :(得分:0)

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

http://www.regexbuddy.com/