Сила шаблона регулярного выражения соответствует условию, а не другому условию - PullRequest
1 голос
/ 15 января 2020

Я пытаюсь заставить соответствовать этим условиям:

  • Если заканчивается 1,2,3 цифры + 1 пробел + 1 буква.
  • Если шаблон соответствует в середина строки, игнорируйте ее.

Входные данные:

ME001000 RV 2 B <- необходимо соответствовать </p>

ME001000 G 10 B <- Требуется соответствие </p>

ME001000 RE 321 B <- Требуется соответствие </p>

MP260000 EQTE 1 A < - Требуется совпадение

EL008002P TR 06 A 1 <- Требуется <strong>НЕ совпадение, так как находится в середине строки

Шаблон регулярного выражения: ([0-9]{1} [A-Z]{1}|[0-9]{2} [A-Z]{1}|[0-9]{3} [A-Z]{1})+(?:[0-9]{2} [A-Z]{1}\s)

  1. Часть: ([0-9]{1} [A-Z]{1}|[0-9]{2} [A-Z]{1}|[0-9]{3} [A-Z]{1}): Соответствует правильно, но также соответствует "06 A" (середина последней строки)

  2. Часть: +(?:[0-9]{2} [A-Z]{1}\s): Для того, чтобы вызвать несоответствие

Что мне нужно сделать, чтобы вызвать несоответствие?

Ответы [ 2 ]

1 голос
/ 15 января 2020

Регулярное выражение, которое вы хотите использовать:

\d{1,3} [A-Z]$

См. Демонстрационное выражение Regex

  1. \d{1,3} совпадения от 1 до 3 цифр
  2. соответствует одному пробелу.
  3. [A-Z] соответствует заглавной букве.
  4. $ соответствует концу строки.

Что В основном вам нужен был $ якорь , чтобы убедиться, что то, что вы искали, находится в конце строки.

Демонстрация регулярных выражений использует спецификацию JavaScript ( вы не указали, какой язык вы используете) и используете флаги g и m. Флаг g предназначен для поиска нескольких совпадений, а флаг m - для привязки $, совпадающей с концом строки и концом строки.

Как указал Ггорлен, вы можете рассмотреть небольшая модификация:

\b\d{1,3} [A-Z]$

Вышеуказанное гарантирует, что первый di git образца, который вы пытаетесь сопоставить, начинается на границе слова (то есть ему предшествует несловесный символ или начало строки).

0 голосов
/ 15 января 2020

Попробуйте:

\d{1,3} [A-Za-z]$
  • \d = любое значение git
  • {1,3} = повторение совпадения от 1 до 3 раз
  • = буквенное пространство
  • [A-Za-z] = любая заглавная или строчная буква
  • $ = конец строки для подтверждения
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...