我在下面打电话给匹配,但是我得到一个例外,表示"表达式评估器中的内部错误。"当我尝试传递" * _ sales.txt"在config.FileNamePattern中。出于某种原因,它并不喜欢这种模式。我究竟做错了什么?我尝试在有和没有' @'的情况下传递它。符号
Match match = Regex.Match(Path.GetFileName(file), @config.FileNamePattern, RegexOptions.IgnoreCase);
答案 0 :(得分:0)
Regex.Match
的第二个参数是正则表达式模式。您传递的"*_sales.txt"
以您认为是通配符的*
开头,但实际上是匹配零次或多次出现的量词。它无法量化模式的开头,它是一个无效的正则表达式。
您可能想要使用
@"_sales\.txt$"
检查字符串是否以_sales.txt
结尾。此外,在您的选项中添加RegexOptions.RightToLeft
可以优化匹配结尾的字符串。
请注意,.
已转义为与文字点匹配。
此外,逐字字符串文字是定义正则表达式模式的最佳方式,因为您只需要转义一次特殊字符。