Создать регулярное выражение для соответствия подстроки - PullRequest
1 голос
/ 01 мая 2020

У меня могут быть строки следующей структуры:

   MIME type [application/octet-stream] is not allowed for service
   MIME type [application/pdf] is not allowed for service 
   MIME type [application/txt] is not allowed for service

Я хочу создать регулярное выражение, которое будет соответствовать любой из этих строк, поэтому я создал регулярное выражение следующим образом:

val p : Regex = Regex.quote("MIME type ([[a-z/]+]) is not allowed for service").r

Но когда я пытаюсь найти соответствие, я получаю None, что означает, что ничего не найдено. Что не так с регулярным выражением? Я использую группирование для соответствия переменной части.

1 Ответ

1 голос
/ 01 мая 2020

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

Обратите внимание, что в отображаемых строках есть пробелы в начале / конце, вам нужно добавить \s* на обоих концах.

Кроме того, класс символов [a-z/] не соответствует -, который присутствует в скобках в первой строке.

Вы можете использовать

val p = """\s*MIME type (\[[^\]\[]+\]) is not allowed for service\s*""".r

Обратите внимание на часть \[[^\]\[]+\], он соответствует

  • \[ - [ char
  • [^\]\[]+ - 1+ символов, отличных от [ и ]
  • \] - соответствует ] char.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...