регулярное выражение удаляет все между 2 строками

#java #regex

#java #регулярное выражение

Вопрос:

Мне нужно регулярное выражение для моей замены, которое удаляет все между 2 строками и самими строками.

Например, если бы у меня было что-то вроде.

 stackoverflow is really awesome/nremove123/n I love it
  

Я пытался выполнить замену, подобную этой строке.replaceAll(«/ n * / n», «»); Это должно привести к

 stackoverflow is really awesome I love it
  

Я думал, что звездочка означает что угодно, но не может заставить ее работать?

приветствия

Ответ №1:

Нет, . означает любой символ. * означает любое количество предыдущих вещей. Так что все есть .* . Что вам нужно, так это

 /n.*/n
  

Если вы хотите оставить пустое пространство между словами, используйте это вместо

 replaceAll("/n.*/n *", " ")
  

Комментарии:

1. Спасибо. Однако это не работает stackoverflow is really awesome/nremove123/nI love it . Где I находится рядом с /n

2. Что вы имеете в виду, говоря, что это не работает? Вы имеете в виду, что оно не добавляет пробел между /n и I ? Если вы заменяете что-то пустой строкой («»), это не может добавить дополнительные пробелы, вместо этого просто помещается пустая строка

3. Результат, который я получаю, заключается stackoverflow is really awesome/nremove123/nI love it в том, что мне нужно, чтобы он работал без пробелов. Приветствия

4. @Decrypter — возможно, стоит немного поэкспериментировать (в вашем случае).

Ответ №2:

Я думаю, вам нужна точка:

replaceAll(«/n.*/n»)

Ответ №3:

Это удалит все, что находится между ab ними.

 replaceAll("ab([;sw"=,:./~{}?!-%amp;#$^()]*?)ab",""); 
  

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