Имя: Пароль:
1C
1С v8
RegExp получить дробное число из строки
,
0 Boudybuilder
 
13.08.16
21:07
Функция ПолучитьЧисло(Строка) Экспорт
    
    мRegExp.Pattern = "[^0-9\ \%\-]";
    Str1 = СокрЛП(Строка);
    Res = мRegExp.Replace(Str1, "");
    Возврат Число(СокрЛП(Res));
    
КонецФункции


По такой маске из строки "есть, 0.3 млн пикс." получаю только целое число. А нужно получить "0.3" .
Ну чтобы и точку получало. А то точку пропускает. И еще чтобы полюбому получало точку которая находится между цифрами, тоесть в числе, и не учитывало другие точки в стоке.
1 Asmody
 
13.08.16
21:25
(0) \d+.\d+
2 Boudybuilder
 
13.08.16
21:31
мRegExp.Pattern = "\d+.\d+";
Ошибку выдает
3 Asmody
 
13.08.16
21:46
ХЗ чё там у тебя за wRegExp. В pcre нет ошибки.
4 orefkov
 
13.08.16
22:46
(1)
\d+.?\d+
5 orefkov
 
13.08.16
22:47
\d+.?\d+
6 orefkov
 
13.08.16
22:48
А что движок форума слэш перед точкой съедает? Два раза посетил, и каждый раз пропадает.
7 Мэс33
 
13.08.16
23:40
А если такая строка: "есть, 3 млн пикс" ?
11 Asmody
 
13.08.16
23:47

\d*\.?\d+
12 Мэс33
 
13.08.16
23:50
(11) не воспринимает строку "вот строка с 3 млн рублей"?
Проверял на https://regex101.com/
13 Мэс33
 
13.08.16
23:52
\d+.\d+\d*\.?\d+|\d
14 Мэс33
 
13.08.16
23:53
\d*\.?\d+|\d
15 Мэс33
 
13.08.16
23:54
//эй... \d*\.?\d+|\d
16 Мэс33
 
13.08.16
23:54
Функция ПолучитьЧисло(Строка) Экспорт
    
    мRegExp.Pattern = "\d*\.?\d+|\d";
    Str1 = СокрЛП(Строка);
    Res = мRegExp.Replace(Str1, "");
    Возврат Число(СокрЛП(Res));
    
КонецФункции
17 Asmody
 
13.08.16
23:56
(12) плохо проверял
18 Boudybuilder
 
18.08.16
15:25
О, щас проверю. Заранее спасибо!
19 Boudybuilder
 
22.08.16
20:17
(16) Строка = "150 г"
Res  Возращает - " г"

А не 150
20 Boudybuilder
 
23.08.16
08:48
(16) Не правильно работает. Помогите.