У меня есть задача, в которой мне нужно проанализировать некоторые данные и перенести их в другой столбец.И в некоторых случаях мне нужно заменить некоторые детали в зависимости от условий.
Я прочитал, что java Pattern / Matcher поддерживает операции упреждения / опережения (или группировки, я не знаю, как именно это называется).
Так, например, у меня есть такая строка 100 K
, и я хочу преобразовать ее в 100000
Я использовал такой шаблон: (?i)(?=[0-9]+)\s*[k]\b
Matcher m = Pattern.compile("(?i)(?=[0-9]+)\\s*[k]\\b").matcher("100 K");
if(m.find()){
System.out.println(m.start());
return;
}
System.out.println("false");
В результате я всегда получаю false
.И я ожидал увидеть 3
.Если я изменю шаблон на (?i)([0-9]+)\\s*[k]\\b
и использую операцию точного совпадения (matches
), тогда я вижу true
, и если я изменяю шаблон на отрицательный прогноз (?i)(?![0-9]+)\\s*[k]\\b
, тогда find () возвращает true
, а start () возвращает3
.
Вопрос в том, допустил ли я ошибку в паттерне или использовал ее неправильно?