Как я могу исправить этот негативный взгляд, чтобы он работал - PullRequest
0 голосов
/ 26 октября 2019

У меня есть строка, например, такая:

ABCD17; ABC18; ABCEF19; XYZ19; ABCDE

В приложении MusicBee я пытаюсь использовать функцию замены Regex, чтобы поменять местами MATCHED элементы для пробелов и, таким образом,преобразовать приведенную выше строку в

ABCEF19; XYZ19

, т.е. ТОЛЬКО сохранить элементы, заканчивающиеся на «19»

Элементы могут быть любой длины, и они могут заканчиваться или не заканчиваться начисло.

Следующее выражение правильно соответствует элементам, оканчивающимся на 19 [^|;].*(?=19).{3}

Однако мне, очевидно, нужно обратное (поскольку соответствующие элементы затем заменяются пустыми строками), которыеНЕ (удивительно для меня)

[^|;].*(?!19).{3}

1 Ответ

1 голос
/ 26 октября 2019

Если вы хотите сохранить только те элементы, которые заканчиваются на 19, одним из вариантов может быть использование границ слова \b и начало совпадения с 1+ заглавными буквами AZ.

При желании можно сопоставить цифры в концене 19 с использованием отрицательного предвкушения (?!19\b)

\b[A-Z]+(?!19\b)\d*\b;?
  • \b Граница слова
  • [A-Z]+ Совпадение с 1 + заглавными буквами AZ (или использование [^\W\d] для сопоставлениясимволы слова без цифры)
  • (?!19\b) Отрицательный взгляд вперед, утверждают, что прямо справа не 19
  • \d* Соответствие 0+ цифр
  • \b;?Граница слова и, возможно, совпадение ;

Regex demo

...