Как мне исключить из этого регулярного выражения только числа? - PullRequest
1 голос
/ 16 июня 2020

Я пытаюсь сопоставить слова, которые выглядят так

:test:
:soda_stream:
:test3:

и так далее. Теперь у меня есть \:\S+\:, и он работает для всего, за исключением того, что у меня также есть части в тексте, которые имеют только числа, например :23:. Я хочу исключить их, но безуспешно. Я просмотрел эту страницу StackOverflow, но она не работает.

Кто-нибудь знает как это сделать? Вероятно, это просто какое-то дополнение, которое исключает, если внутри : есть только числа.

Ответы [ 2 ]

2 голосов
/ 16 июня 2020

Принимая во внимание текущие примеры, вы можете использовать

:(?!\d+:)[^\s:]+:

См. демонстрацию регулярных выражений

Подробности

  • : - двоеточие
  • (?!\d+:) - отрицательный просмотр вперед, который не может соответствовать, если есть одна или несколько цифр, а затем : сразу справа от текущего местоположения
  • [^\s:]+ - 1 или более символов, кроме пробела и двоеточия
  • : - двоеточие
1 голос
/ 16 июня 2020

В качестве альтернативы вы можете сопоставить хотя бы один символ, который не является di git или пробельным символом между двоеточиями:

:[^:\s]*[^:\s\d][^:\s]*:
  • : Буквальное соответствие
  • [^:\s]* Соответствует 0+ раз любому символу, кроме: или пробельному символу
  • [^:\s\d] Соответствует любому символу кроме: или пробельному символу или ди git
  • [^:\s]* Соответствует 0+ раз любому символу, кроме: или пробельного символа
  • : Буквальное совпадение

Regex demo

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