正则表达式匹配抛出异常与我的模式

时间:2016-09-28 21:06:59

标签: c# regex match

我在下面打电话给匹配,但是我得到一个例外,表示"表达式评估器中的内部错误。"当我尝试传递" * _ sales.txt"在config.FileNamePattern中。出于某种原因,它并不喜欢这种模式。我究竟做错了什么?我尝试在有和没有' @'的情况下传递它。符号

Match match = Regex.Match(Path.GetFileName(file), @config.FileNamePattern, RegexOptions.IgnoreCase);

1 个答案:

答案 0 :(得分:0)

Regex.Match的第二个参数是正则表达式模式。您传递的"*_sales.txt"以您认为是通配符的*开头,但实际上是匹配零次或多次出现的量词。它无法量化模式的开头,它是一个无效的正则表达式。

您可能想要使用

@"_sales\.txt$"

检查字符串是否以_sales.txt结尾。此外,在您的选项中添加RegexOptions.RightToLeft可以优化匹配结尾的字符串。

请注意,.已转义为与文字点匹配。

此外,逐字字符串文字是定义正则表达式模式的最佳方式,因为您只需要转义一次特殊字符。