NotePad ++ регулярное выражение удаляет слова с пробелом и определенными буквами - PullRequest
4 голосов
/ 15 октября 2019

Я пытаюсь удалить слова, которые имеют «com» ​​и заканчиваются на «.». Я хотел бы удалить полное слово и оставить "."

Вот пример начального текста:

This is a test testcom.

Я хотел бы, чтобы вывод был:

This is a test .

То, что я до сих пор придумал, это:

(?<=\ ).*?com(?=\.)

, но это, кажется, выдвигает на первый план полное предложение в первый пробел.

Ответы [ 2 ]

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

Полагаю, этот вам подойдет:

\w*?com(?=\.)
1 голос
/ 15 октября 2019

Шаблон (?<=\ ).*?com(?=\.) соответствует местоположению после пробела, затем сопоставляет любые 0 или более символов, кроме символов разрыва строки, но как можно меньше, вплоть до первого вхождения com, за которым следует точка. Таким образом, он будет соответствовать любому количеству пробелов на пути от соответствующего места после пробела к подстроке com..

Если com может быть где-то внутри слова , вы можете использоватьлюбое из двух приведенных ниже выражений:

[^\s.]*com[^\s.]*\.
\w*com\w*\.

и замените его на ..

Или эквивалентное:

[^\s.]*com[^\s.]*(?=\.)
\w*com\w*(?=\.)

и замените пустой строкой.

Если com должен находиться в конце слова , просто удалите второй [^\s.]* / \w* из приведенных выше выражений.

Подробно

  • [^\s.]*com[^\s.]*\. - соответствует 0+ символов, отличных от пробела и ., затем com, а затем снова 0+ символов, кроме пробела и . и a .
  • \w*com\w*\. - соответствует 0+ букв / цифр / _, затем com, затем снова 0+ букв / цифр / _ и затем ..

Блокнот ++ демо и настройки:

enter image description here

...