我正在尝试编写一些正则表达式模式代码,它将通过使用组来取出文本的某些部分。这是代码:
private static string ParseSnippet(string ownitDirectory, string project)
{
Match m = Regex.Match("(" + project + "\\\\.*\\\\)", ownitDirectory, RegexOptions.IgnoreCase);
return m.Groups[1].Value;
}
我遇到的问题是我使用的模式会导致异常发生。这个例外对我没有任何意义。我已在大量在线测试人员中测试了该模式,但这并没有帮助解决问题。
有人会对我该做什么有任何建议吗?
编辑:
忘了提到异常是"十六进制数字不足"
答案 0 :(得分:4)
tldr:您很可能得到错误,因为您的输入中包含“\ x”或“\ u”,例如目录“c:\ xenophobe”或“c:\ user ...”
根据此页面(http://www.regular-expressions.info/quickstart.html),“\ x”用于表示Unicode或其他语言设置字符。对于Unicode,“\ x {FFFF}”或“\ uFFFF”都匹配具有给定十六进制索引的Unicode字符。由于x / u之后的文件夹名称与0-9不匹配,因此十六进制数字的a-f模式和您的文件夹被用作正则表达式匹配,您收到错误。任何时候你使用你的字符串作为正则表达式进行意外比较,你必然会得到正则表达式解析问题。
答案 1 :(得分:1)
根据this page,似乎Regex.Match
的参数被反转。你试过这个吗?
Regex.Match(ownitDirectory, "(" + project + "\\\\.*\\\\)", RegexOptions.IgnoreCase);