Регулярные выражения JAVA , как удалить символы из середины строки и конца строки
Помогите кто знает "регулярные выражения" .
у меня есть метод , который чистит текст :
JSONObject clear (JSONObject input){
String annotation = input.getString("annotation");
Pattern pattern1 = Pattern.compile("<br>$");
Matcher matcher = pattern1.matcher(annotation);
annotation = matcher.replaceAll("");
String text = input.getString("text");
Matcher matcher2 = pattern1.matcher(text);
text = matcher2.replaceAll("");
input.put("annotation",annotation);
input.put("text",text);
return input;
}
написал на него Юнит тест для проверки :
@Test
public void testOfClear () {
JSONObject object= new JSONObject();
object.put("annotation", "<....ки, накладні.<br/>\\n<br/>\\nCума не по.<br>");
object.put("text", "<....ки, накладні.<br/>\\n<br/>\\nCума не по.<br>");
JSONObject result = sign.clear(object);
Assert.assertEquals("....ки, накладні.<br/>\nCума не по..." , result.getString("annotation"));
Assert.assertEquals("....ки, накладні.<br/>\nCума не по..." , result.getString("text"));
}
мне нужно:
в середине текста, если есть несколько новых строк подряд - нужно оставить только одну, так же
нужно удалить в конце текста полномочия <br> и пробелы.
пример:
как было:
....ки, накладні.<br/>\n<br/>\nCума не по...<br>
ожидаемый результат:
....ки, накладні.<br/>\nCума не по...
Вопрос , напишите как правильно комбинировать символы в РВ и желательно с примером, пробовал по всякому , не получается , либо только в конце удаляю либо в начале.
Pattern pattern1 = Pattern.compile("<br>$");
ломаю голову 2 сутки , любой ответ принимается , всем удачи с кодом!
Ответы (2 шт):
Автор решения: Perfect Voyage
→ Ссылка
String s1 = "....ки, накладні.<br/>\\n<br/>\\nCума не по...<br>";
String delete [] = {"\\n<br/>","<br>"};
s1 = replacementMass(s1,delete);
System.out.println(s1);
public static String replacementMass(String target, String ...x){
String result = target;
for(int i = 0 ; i < x.length ; i ++){
result = new String(result.replace(x[i],""));
}
return result;
}
Автор решения: dIm0n
→ Ссылка
Найденное вот этим:
^((?:(?!\\n.*\\n)(?!<br>\s*$).)*)(?:\\n.*(\\n))?(.*?)(<br>\s*)?$
заменить вот этим:
$1$2$3
....ки, накладні.<br/>\n<br/>\nCума не по...<br>
bwtboobrno
qqqq<br>
\n111
\n111\n222<br> \n333\n444<br>
111<br> <br><br>
x\\n\\n<br<br>><br>
меняется на
....ки, накладні.<br/>\nCума не по...
bwtboobrno
qqqq
\n111
\n444
111<br> <br>
x\\n<br<br>>
Сгенерированный код на Java:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
final String regex = "^((?:(?!\\\\n.*\\\\n)(?!<br>\\s*$).)*)(?:\\\\n.*(\\\\n))?(.*?)(<br>\\s*)?$";
final String string = "....ки, накладні.<br/>\\n<br/>\\nCума не по...<br>\n"
+ "bwtboobrno\n"
+ "qqqq<br>\n"
+ "\\n111\n"
+ "\\n111\\n222<br> \\n333\\n444<br> \n"
+ "111<br> <br><br> \n"
+ "x\\\\n\\\\n<br<br>><br>";
final String subst = "$1$2$3";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
// The substituted value will be contained in the result variable
final String result = matcher.replaceAll(subst);
System.out.println("Substitution result: " + result);