Regex удаляет завершающий e (кроме слов из 2 и 3 букв) - PullRequest
1 голос
/ 09 июля 2020

Я пытаюсь написать простое регулярное выражение, которое удалит завершающий символ «e» во всех словах, кроме двух- и трехбуквенных слов в строке. Следующее решение будет правильно находить слова, но будет соответствовать полным словам, а не только 'e'.

/\b\w{2,}e\b/

Я не могу объединить предлагаемое решение с группами прогнозирования (используя '(? =)') Для работы правильно.

Ответы [ 2 ]

1 голос
/ 09 июля 2020

Использовать ретроспективный просмотр:

(?<=\w\w\w)e\b
0 голосов
/ 09 июля 2020

Если вы хотите сопоставить обучающие электронные символы в слове, кроме 1-го, второго или третьего символа, вы можете захватить 1-3 символа слова, затем сопоставить как можно меньше символов слова и сопоставить конечные символы e.

\b(\w{1,3}\w*?)e*\b

Regex demo

В качестве замены используйте группу 1.

Чтобы удалить один e, замените e* на e?

[
  "theeeeeeeee",
  "the",
  "te",
  "ee",
  "eee",
  "eeee",
  "abcdefeee",
  "ehteheeee",
].forEach(s => console.log(s.replace(/\b(\w{1,3}\w*?)e*\b/, "$1")))

Если вам не нужно принимать во внимание границу слова в начале, вы можете захватить 3 символа слова и сопоставить один e в конце.

(\w{3})e\b

Демо Regex

[
  "thee",
  "the",
  "te",
  "ee",
  "eee",
  "eeee",
  "abcdefeee",
  "ehteheeee",
].forEach(s => console.log(s.replace(/(\w{3})e\b/, "$1")))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...