我正在做最简单的regex.match,我给Regex.Match一个字符的模式,它根本不返回匹配,我确保输入文本包含很多字符?
我检查了所有的使用情况。
它非常奇怪。
任何帮助将不胜感激!
感谢。
编辑:
我的样本是“做任何类型的匹配根本就不工作” 返回空匹配
Match m=Regex.Match(@"c","abcdc");
代码编译时没有错误,为什么NO MATCHING !!
答案 0 :(得分:11)
编辑:根据您的编辑,问题在于您无法使用参数。您需要切换订单并提供输入(字符串来源以查找匹配项)然后 模式(要匹配的内容)。
实际上,IntelliSense为您指定了此顺序,如下图所示:
通常有助于匹配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");
此外,您的代码编译并不意味着它必然会找到匹配...
答案 2 :(得分:3)
我向你保证,正则表达式有效。我已经使用了很多次。
这会将字符串"d"
放入变量s
:
string s = System.Text.RegularExpressions.Regex.Match("asdf", "d").Value;
如果这不起作用,也许你有一些奇怪的文化背景会影响字符串的比较方式? System.Globalization.CultureInfo.CurrentCulture.DisplayName
是否会返回预期值?
答案 3 :(得分:0)
我建议您使用RegExBuddy。这样你可以检查你的正则表达式与测试文件,并确保他们应该返回一些东西,你没有弄乱你的表达。