Извлечь десятичное число из предложения, используя выражение QRegularExpression

В настоящее время я пытаюсь извлечь следующее десятичное число:

+2453,6756667756

из следующего предложения:

ID: 1 x: 1202 y: 2453.6756667756 w: 242

Я использую этот код:

regularExpression.setPattern("(\\d+)(?:\\s*)(w:)")

Однако это дает мне такой результат:

6756667756

что совсем не правильно.

Не могли бы вы мне помочь, пожалуйста ?

1

Решение

Вы можете использовать следующее регулярное выражение:

\d+\.\d+(?=\s*w:)

Увидеть демонстрация

В Qt:

regularExpression.setPattern("\\d+\\.\\d+(?=\\s*w:)")

Соответствие регулярному выражению:

  • \d+ — 1 или более цифр
  • \. — буквальная точка
  • \d+ — 1 или более цифр
  • (?=\s*w:) — положительный прогноз, подтверждающий наличие нулевого или большего количества пробельных символов после совпадения последней цифры и w с последующим : (но эта подстрока не используется, просто проверяется на наличие, так как утверждения нулевой ширины).

Вы можете использовать более простое регулярное выражение без предвкушения с группой захвата:

(\d+\.\d+)\s*w:

Тогда значение будет в группе 1.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]