Как насчет:
\d+-[^-]+-[^-]+\.sql
Редактировать: Вы хотите только буквы, так что здесь это без конкретных диапазонов.
\d+-[a-z]+-[a-z]+\.sql
- Вы также захотите использовать флаг i
, не уверен, как это делается в c #, но здесь он находится в js / perl:
/\d+-[a-z]+-[a-z]+\.sql/i
Диапазоны сложнее. Вот пример того, как соответствовать 0-255:
([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])
Таким образом, чтобы соответствовать (0-255) -text-text.sql, у вас будет это:
/^(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])-[a-z]+-[a-z]+\.sql/i
(я поместил цифры в группу без захвата и сопоставил их с начала строки, чтобы предотвратить частичное совпадение числа и в случае, если вы ожидаете нумерованные группы или что-то в этом роде).
Обычно каждый раз, когда вам нужна еще одна цифра, вам нужно будет добавить новое условие в это дело. Чем меньше цифра, которую вы хотите сопоставить, тем больше случаев вам понадобится. Какой желаемый минимум / максимум? AFAIK, нет простого способа сделать это динамически (хотя я хотел бы, чтобы кто-то показал мне, что я не прав в этом).
Простейшим способом обойти это было бы просто захватить цифры и использовать собственный синтаксис, чтобы увидеть, находится ли он в вашем диапазоне. Пример в js:
var match = filename.match(/(\d+)-[a-z]+-[a-z]+\.sql/i);
if(match && match[1] < maximumNumber && match[1] > minimumNumber){
doStuff();
}