Я не могу найти правильный способ удаления нечувствительных к регистру подстрок, равных «null», и замену их пустой строкой на огромную строку входных данных, которая содержит много строк и использует ; в качестверазделитель.
Для упрощения приведу пример того, что я ищу:
Строка ввода
Steve;nuLL;2;null\n
null;nullo;nUll;Marc\n
....
Ожидаемый результат
Steve;;2;\n
;nullo;;Marc\n
...
Код
Matcher matcher = Pattern.compile("(?i)(^|;)(null)(;|$)").matcher(dataStr);
StringBuffer sb = new StringBuffer();
while (matcher.find()) {
matcher.appendReplacement(sb, matcher.group(1) + "" + matcher.group(3));
}
return sb.toString();
Можно ли решить эту проблему с помощью регулярных выражений?
РЕДАКТИРОВАТЬ:
Из приведенного выше Java-кода я получаю только первое совпадение, которое когда-либо заменялось, но не каждое появление в строке и в потоке данных.По любой причине matcher.find()
выполняется только один раз.