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。 这样你可以检查你的正则表达式与测试文件,并确保他们应该返回一些东西,你没有弄乱你的表达。