Reg Exp не совпадает - PullRequest
       14

Reg Exp не совпадает

1 голос
/ 12 июля 2019

У меня есть регулярное выражение, которое не находит совпадения с текстом в моем файле

Рег. Пример:

^[ \t]*#[ \t]+vtk[ \t]+DataFile[ \t]+Version[ \t]+([^\s]+)[ \t]*\n(.*)\n[ \t]*(ASCII|BINARY)[ \t]*\n[ \t]*DATASET[ \t]+([^ ]+)[ \t]*\n

Текст файла:

# vtk DataFile Version 4.2
ASCII
DATASET

Когда я обрезаю выражение на следующее, оно работает:

 ^[ \t]*#[ \t]+vtk[ \t]+DataFile[ \t]+Version[ \t]+([^\s]+)[ \t]*\n(.*)\n[ \t]*

Почему текст не сопоставляется?

1 Ответ

2 голосов
/ 12 июля 2019

Я думаю, что вы соответствуете (.*)\n слишком много, и после DATASET больше нет данных для сопоставления, но в вашем шаблоне все еще есть [ \t]+([^ ]+)[ \t]*\n, которые не являются обязательными.

Попробуйте это так:

^[ \t]*#[ \t]+vtk[ \t]+DataFile[ \t]+Version[ \t]+([^\s]+)[ \t]*\n[ \t]*(ASCII|BINARY)[ \t]*\n[ \t]*DATASET

По частям ваш шаблон будет выглядеть так:

  • ^
  • [ \t]*#
  • [ \t]+vtk
  • [ \t]+DataFile
  • [ \t]+Version
  • [ \t]+([^\s]+) Эта группа будет соответствовать 4.2
  • [ \t]*\n
  • [ \t]*(ASCII|BINARY)
  • [ \t]*\n
  • [ \t]*DATASET

Regex demo

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