В настоящее время я пытаюсь извлечь следующее десятичное число:
+2453,6756667756
из следующего предложения:
ID: 1 x: 1202 y: 2453.6756667756 w: 242
Я использую этот код:
regularExpression.setPattern("(\\d+)(?:\\s*)(w:)")
Однако это дает мне такой результат:
6756667756
что совсем не правильно.
Не могли бы вы мне помочь, пожалуйста ?
Вы можете использовать следующее регулярное выражение:
\d+\.\d+(?=\s*w:)
Увидеть демонстрация
В Qt:
regularExpression.setPattern("\\d+\\.\\d+(?=\\s*w:)")
Соответствие регулярному выражению:
\d+
— 1 или более цифр\.
— буквальная точка\d+
— 1 или более цифр(?=\s*w:)
— положительный прогноз, подтверждающий наличие нулевого или большего количества пробельных символов после совпадения последней цифры и w
с последующим :
(но эта подстрока не используется, просто проверяется на наличие, так как утверждения нулевой ширины).Вы можете использовать более простое регулярное выражение без предвкушения с группой захвата:
(\d+\.\d+)\s*w:
Тогда значение будет в группе 1.
Других решений пока нет …