Josh_0101 Ответов: 2

Как получить динамические числа из строки с помощью регулярного выражения?


Привет, я использую VS2008 MFC VC++ и пытаюсь получить динамические числа из строки и вставить их в другую строку.

Допустим есть диалог и получаем заголовок окна в виде строки а:

Строка (строка ввода):
Voltage: 2.0V, Current:0.4A, Resistance: 5.0Ω, Power: 1.5W.

Строку, а также динамический ввод. Может быть и так
Напряжение: 30 в, ток:1,2 а, сопротивление: 25 Ом, мощность: 36 Вт.

или в следующий раз может быть
Яблоко находится внутри столбца: 12, строки: 3, коробки: 5.

Для строки B она точно такая же, как и строка A, за исключением того, что числа заменяются разделителем. Он используется в качестве ссылки для извлечения чисел из строки A.

Строка Б (входной строки):
Voltage: %fV, Current:%fA, Resistance: %fΩ, Power: %fW.

Тогда это строка C,

Строка C (выходная ссылочная строка):
The answers are %fV; %fA; %fΩ; %fW.

Поэтому, как я могу извлечь 4 набора чисел и вставить их в строку C и получить окончательный вывод в виде
The answers are 2.0V; 0.4A; 5.0Ω; 1.5W.

От моего понимания регулярное выражение, является ли строка B (входная ссылочная строка) шаблоном, который используется для поиска/сопоставления строки A? Есть идеи?

Спасибо.

Что я уже пробовал:

Я попытался реализовать метод разделения и слияния, но это кажется невозможным для этой ситуации, потому что слишком много возможностей от входной строки.

2 Ответов

Рейтинг:
2

OriginalGriff

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

(\d+(\.\d+)?)
будет ли это сделано, он соответствует одной или нескольким цифрам, за которыми необязательно следует десятичная точка и одна или несколько цифр.


Josh_0101

Существует проблема, что делать, если существуют различные типы данных числа, включенные в одну и ту же строку? int; float; double;

OriginalGriff

А ты как думаешь? Регулярное выражение все равно подхватит его ... обработка строки чисел после этого зависит от вашего приложения!

Рейтинг:
2

Patrice T

Всего лишь несколько интересных ссылок, которые помогут построить и отладить регулярное выражение.
Вот ссылка на документацию по регулярным выражениям:
perlre - perldoc.perl.org[^]
Вот ссылки на инструменты, помогающие создавать регулярные выражения и отлаживать их:
.Объем тестер регулярное выражение - регулярное выражение шторм[^]
Регулярное Средство Выражения Эспрессо [^]
RegExr: Learn, Build, & Test RegEx[^]
Онлайн-тестер регулярных выражений и отладчик: PHP, PCRE, Python, Golang и JavaScript[^]
Этот пример показывает вам регулярное выражение в виде красивого графика, который действительно полезен для понимания того, что делает регулярное выражение: Debuggex: онлайн-тестер визуальных регулярных выражений. JavaScript, Python и PCRE.[^]
Этот сайт также показывает регулярное выражение в красивом графике, но не может проверить, что соответствует регулярному выражению: Regexper[^]