Регулярное выражение не подходит для строки c # - PullRequest
0 голосов
/ 04 апреля 2019
string val = "VFC - [C:\study\Run20315.5000]"
string pattern = "VFC - *C:\\study\\Rund.*"

Я написал выражение ниже, но оно становится ложным.

bool Match= Regex.IsMatch(val, pattern)

1 Ответ

4 голосов
/ 04 апреля 2019

Вы забыли о квадратных скобках, обратная косая черта перед d отсутствует, если вы планировали сопоставить цифру, а обратная косая черта должна быть удвоена - или лучше - использовать буквальный строковый литерал. Также обратите внимание, что * - это квантификатор , который соответствует предыдущему шаблону 0 или более раз. Если вам нужно сопоставить произвольный текст между двумя шаблонами, используйте .* или .*? и, если возможны разрывы строк, скомпилируйте шаблон с помощью RegexOptions.Singleline:

string pattern = @"VFC - .*C:\\study\\Run\d";
bool Match= Regex.IsMatch(val, pattern, RegexOptions.Singleline);

См. Демонстрационный пример .NET и график Regulex :

enter image description here

подробности

  • VFC - - литерал VFC - подстрока
  • .* - любой ноль или более символов как можно больше
  • C:\\study\\Run - подстрока C:\study\Run
  • \d - цифра.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...