Я ищу регулярное выражение для поиска чисел в строке; если у меня есть строка, как:regex с номерами в строке C++
li 12.12 si 43,23 45 31 uf 889 uf31 3.12345
Я хочу найти только номера:
12.12 45 31 889 3.12345
Я попытался с помощью следующей схеме:
((\\+|-)?[[:digit:]]+)(\\.(([[:digit:]]+)?))?
но выход включал uf31
и 43,23
.
Я попытался с:
(?!([a-z]*((\\+|-)?[[:digit:]]+)(\\.(([[:digit:]]+)?))?[a-z]*))?((\\+|-)?[[:digit:]]+)(\\.(([[:digit:]]+)?))?
, но это дало тот же результат.
Какое решение?
РЕШЕНИЯ оставить потомство решения:
- Если вы ищете простое и эффективное решение, которое не использует регулярное выражение, см Jonathan Mee's post below
Если вы ищете решение с использованием регулярных выражений, см the wonderful regex from stribizhev
R"((?:^|\s)([+-]?[[:digit:]]+(?:\.[[:digit:]]+)?)(?=$|\s))"
Можете ли вы определить, что вы хотите использовать для разделителей? Я понимаю, что вы * не * хотите включать что-либо, кроме пробелов, разделенных пробелами. Это верно? –
Вы хотите поддержать '.5'? –
Как насчет научной нотации? Вам нужно будет указать, что вы хотите захватить. Строка вашего примера не содержит + или - и вы не упоминаете их в тексте, но ваши попытки regexp делают. – user2079303