Регулярные выражения для соответствия этим именам файлов PDF - PullRequest
0 голосов
/ 04 марта 2019

Я ищу регулярное выражение, соответствующее fileNamePattern.Файлы в формате pdf могут иметь следующие имена: 8 буквенно-цифровых символов, -, 4 буквенно-цифровых символа, -, 4 буквенно-цифровых символа, -, 4 буквенно-цифровых символа, -, 12 буквенно-цифровых символов + .pdf.

Примеры:

5b7f991f-0726-4dd5-856e-7cea820f02c5.pdf
138bcee6-db7f-47a7-97bf-69c0b3989698.pdf
e988315b-ade7-48e5-9733-35bb59a3c28d.pdf

Я использую

^[A-Z][0-9]{8}[-][A-Z][0-9]{4}[-][A-Z][0-9]{4}[-][A-Z][0-9]{4}[-][A-Z][0-9]{12}[.]pdf

Однако я не уверен, что это правильно, поскольку я не получаю совпадений.

Ответы [ 3 ]

0 голосов
/ 04 марта 2019

Это должно сработать/ i

Я попробовал это здесь RegEx Testing

\ w = буквенно-цифровой {n} = раз, когда знак должен появиться

gi = areфлаги: "i" = без учета регистра.

0 голосов
/ 04 марта 2019

Вы соответствуете только заглавным буквам в своем регулярном выражении, и когда вы используете [A-Z][0-9]{4}, вы не соответствуете четырем буквенно-цифровым символам, вы сопоставляете букву, за которой следуют 4 цифры.

Итак, вам нужно объединить [A-Z][0-9] в односимвольные классы [A-Z0-9] и затем использовать флаг без учета регистра.

Кроме того, вам необходимо использовать $ в конце регулярного выражения, чтобы шаблон соответствовал всемуstring.

Использование

^[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}[.]pdf$

См. демонстрационную версию regex

In C #,

var rx = new Regex(@"^[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}[.]pdf$", RegexOptions.IgnoreCase);

Обратите внимание, что регистр не учитываетсяможет быть установлен с помощью встроенного модификатора (?i):

var pattern = @"(?i)^[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}[.]pdf$";
// check if the string matches the pattern
if (Regex.IsMatch(s, pattern) 
{
    // The string matches...
}
0 голосов
/ 04 марта 2019

Regex r = new Regex(@"^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}\.pdf$");

Если вы явно не хотите подчеркивания, вы можете использовать:

^[a-zA-Z\d]{8}-[a-zA-Z\d]{4}-[a-zA-Z\d]{4}-[a-zA-Z\d]{4}-[a-zA-Z\d]{12}\.pdf$

Regex чувствителен к регистру (если вы его не указали)чтобы игнорировать регистр, используя RegexOptions. В настоящее время основная проблема заключается в том, что ваше регулярное выражение говорит, что соответствует букве, а затем соответствует n цифрам вместо совпадающих n буквенно-цифровых символов.

С установкой флага без учета регистраВаше регулярное выражение может упростить до:

^[A-Z\d]{8}-[A-Z\d]{4}-[A-Z\d]{4}-[A-Z\d]{4}-[A-Z\d]{12}\.pdf$

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...