Регулярное выражение для исключения текста между первым вхождением подчеркивания и последним вхождением гифона - PullRequest
2 голосов
/ 17 июня 2020

Я ищу регулярное выражение для соответствия

  1. тексту до (включительно) первого вхождения подчеркивания и
  2. текста после последнего вхождения гифона, но вырезая все ведущие нули

Пример ввода:

Text_un_important-0011

Желаемый результат (путем объединения всех совпадений):

Text_11

Я придумал: (?:^|(?:00))(.+?)(?:$|_), но у него есть fl aws: Работает, только если в конце стоит ровно один дефис и два ведущих нуля. К сожалению, я не могу это исправить.

Ответы [ 2 ]

1 голос
/ 17 июня 2020

Если вы следуете своему текущему logi c, вы можете использовать

^[^_]*_|[1-9]\d*$

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

  • ^ - начало строки
  • [^_]* - 0 или более символов, кроме _, а затем
  • _ - a _ char
  • | - или
  • [1-9] - ненулевое di git
  • \d* - 0 или более цифр
  • $ - конец строки

Вы также можете использовать замену logi c:

Найти : _.*-0* Заменить : _

См. Демонстрацию регулярного выражения . Шаблон _.*-0* соответствует

  • _ - знак подчеркивания
  • .* - любые 0 или более символов, кроме символов разрыва строки, как можно больше
  • - - дефис
  • 0* - ноль или более 0 символов.

Поскольку используется первый _, шаблон замены должен быть _.

0 голосов
/ 17 июня 2020

Итак, вы хотите захватить первое слово и последние цифры, которые не равны нулю:

([\w\d]+)(_[\w\d]+)*(-0*)(\d+)

используйте первую и последнюю захваченную группу.

  • ([\ w \ d] +) захватывает слово, которое может иметь число (например, word1)
  • (_ [\ w \ d] +) * захватывает повторения _word (например, _word1_anotherword2_third3)
  • (- 0 *) записывает дефис, за которым следуют последовательные нули (например, -00000000)
  • (\ d +) захватывает все цифры, следующие за последовательными нулями
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...