Использование regexp для поиска повторяющегося шаблона в MATLAB - PullRequest
0 голосов
/ 19 сентября 2018
 input = ' 12Z taj 20501 jfdjda OCNL jtjajd ptpa 23Z jfdakdkf tjajdfk OCNL fdkadja 02Z fdjafsdk fkdsafk OCNL fdkafk dksakj = '

с использованием регулярного выражения

regexp(input,'\s\d{2,4}Z\s.*(OCNL)','match')

Я пытаюсь получить вывод

[1,1] = 12Z taj 20501 jfdjda OCNL jtjajd ptpa

[1,2] = 23Z jfdakdkf tjajdfk OCNL fdkadja

[1,3] = 02Z fdjafsdk fkdsafk OCNL fdkafk dksakj

1 Ответ

0 голосов
/ 20 сентября 2018

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

(?<!\S)\d{2,4}Z\s+.*?\S(?=\s\d{2,4}Z\s|\s*=\s*$)

См. Демоверсию regex .

Подробности

  • (?<!\S) - должен быть пробел или начало строки непосредственно слева от текущего местоположения
  • \d{2,4} - 2, 3 или 4 цифры
  • Z - буква Z
  • \s+ - 1+ пробелов
  • .*?\S - любой ноль или более символов, как можно меньше, а затем непробельный символ
  • (?=\s\d{2,4}Z\s|\s*=\s*$) - там должно бытьбыть одним из двух шаблонов непосредственно справа от текущего местоположения:
    • \s\d{2,4}Z\s - пробел, 2, 3 или 4 цифры, Z и пробел
    • |- или
    • \s*=\s*$ - =, заключенный в 0+ пробельных символов в конце строки.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...