bool IsMatch(string someString)
{
    var patterns = new[]
    {
        "someExpr1",
        "someExpr2",
        "someExpr3"
    };
    return patterns.Any(pattern => Regex.IsMatch(someString, pattern));
}
Читабельнее чем case или if, сразу видно по каким pattern`ам ищутся совпадения.
Any не будет проверять все patterns, выйдет при первом найденном и вернёт true
А чтобы сделать так, как вы ходите, вот оно:
var someStr = "someValue";
switch (true)
{
    case Regex.IsMatch(someStr, "somePattern1")
        // do...
        break;
    case Regex.IsMatch(someStr, "somePattern2")
        // do...
        break;
    case Regex.IsMatch(someStr, "somePattern3")
        // do...
        break;
}
Это будет, предположительно, работать с C#7, который ещё не вышел.
Для вашего случая можете попробовать что-то такое
void Main()
{
    var fileNameList = new List<string> { "fileNameOne", "fileNameTwo" };
    foreach (var fileName in fileNameList)
    {
        var fileAction = FileActions.FirstOrDefault(x => Regex.IsMatch(fileName, x.Key));
        if (fileAction.Key != null)
            fileAction.Value(fileName);
    }
}
IDictionary<string, Action<string>> FileActions = new Dictionary<string, Action<string>>
{
    { "somePatternOne", SomeActionOne },
    { "somePatternTwo", SomeActionTwo }
};
void SomeActionOne(string fileName) { /* Do... */ }
void SomeActionTwo(string fileName) { /* Do... */ }
Если код парсинга для каждого файла значительно отличается и кода много, вместо методов можно использовать классы (полиформизм)