Как удалить слово из другого слова из строки с помощью регулярного выражения - PullRequest
0 голосов
/ 15 декабря 2011

Как я могу удалить часть строки из одного слова в другое, используя регулярные выражения?

Например, у меня есть строка вроде

String s = "<html><body> this is test </body></html>" 

В приведенной выше строке я должен удалить деталь из начального тега <body> до конечного тега </body>, и значение между ними будет определяться динамически, вывод должен быть s="<html></html>".

Ответы [ 2 ]

2 голосов
/ 15 декабря 2011

Если я не пропустил что-то здесь, вы можете использовать:

s = s.replaceFirst("<body>.+</body>", "");

Конечно, с вашим примером вы также можете использовать

s = s.substring(0, 6) + s.substring(s.length() - 7, s.length());

, чтобы избежать дорогостоящихрегулярное выражение.

0 голосов
/ 15 декабря 2011

Если вы редактируете HTML или лучше XHTML и / или XML, используйте DOM.Это не очень хорошая идея, пытаясь сделать это с помощью регулярных выражений.

Если вы хотите / хотите использовать регулярное выражение:

Если вы хотите удалить из HERE в THERE, попросите васдумал о таких случаях HERE A HERE B THERE C THERE?Простое не жадное совпадение не будет вести себя как «ожидаемый», удаляя внутренний ЗДЕСЬ в ЗДЕСЬ, но приведет к C THERE.

По сути, вам нужно найти THERE и затем перейти влевочтобы найти сначала HERE, s/(.*)HERE.*?THERE/\1/ (с использованием синтаксиса PCRE) должен выполнить свою задачу и оставить HERE A C THERE.Повторите, чтобы избавиться от этого тоже.Однако это не будет работать с глобальной заменой, заменяющей все вхождения.Для такого использования используйте алгоритм:

while (found) {
  find a first `THERE` and then go to left to find first `HERE` \
  with regexps or without.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...