2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 регулярные выражения
Сообщение21.12.2009, 17:14 


23/12/08
245
Украина
Можете помоч правильно записать регулярное выражение
для ввода числа с плавающей точкой(с возможной експонентой).
Я вот написал но почемуто оно не работает так как я хочу
Код:
RegExp rx("[(-|+)]?[1-9]{1,}[0-9]{0,}\\.?[1-9]{1,}[0-9]{0,}(\\e[(-|+)]{,1}[1-9]{1,}[0-9]{0,}){0,1})?");

Проблема собственно в том что оно позволяет мне ввести какойто один левый символ.

 Профиль  
                  
 
 Re: регулярные выражения
Сообщение21.12.2009, 20:51 
Заслуженный участник


09/08/09
3438
С.Петербург
Во-первых, попробуйте вставить в начало регулярного выражения символ '^', а в конец - '$' (чтобы делалась попытка сопоставить с образцом всю входную строку, а не её произвольный фрагмент).
Во-вторых, проверьте скобки: мне кажется, последняя закрывающая скобка не имеет парной открывающей.
Ну и в-третьих, странный у Вас какой-то образец для числа с плавающей точкой. В частности:
- первая цифра не может быть 0
- первая цифра дробной части тоже не может быть 0.

(Оффтоп)

Не помню откуда:
Если у программиста есть проблема и он думает — «Я решу ее при помощи регулярных выражений», то с этого момента у программиста уже две проблемы :)

 Профиль  
                  
 
 Re: регулярные выражения
Сообщение21.12.2009, 21:20 


23/12/08
245
Украина
а что разве может?

Нашол ошибку, получилось так:
Код:
RegExp rx("^[-+]?[1-9][0-9]{0,}\\.[1-9][0-9]{0,}(\\e[-+]?[1-9][0-9]{0,})?$");


проблема была когда я писал "[(-|+)]"(лично я писал так: либо'-' либо '+' ) на этом месте оно позволяло вводить себе любую букву.
Может ктото обяснит почему?

 Профиль  
                  
 
 Re: регулярные выражения
Сообщение21.12.2009, 21:27 
Заслуженный участник


09/08/09
3438
С.Петербург
Nerazumovskiy в сообщении #273873 писал(а):
а что разве может?
А по-Вашему, 0.01 -- это неправильное число с плавающей точкой?

 Профиль  
                  
 
 Re: регулярные выражения
Сообщение21.12.2009, 21:57 
Заслуженный участник


04/05/09
4584
Nerazumovskiy в сообщении #273873 писал(а):
проблема была когда я писал "[(-|+)]"(лично я писал так: либо'-' либо '+' ) на этом месте оно позволяло вводить себе любую букву.
То, что вы написали, это либо '(', либо '-', либо '|', либо '+', либо ')'.

-- Пн дек 21, 2009 14:02:56 --

Nerazumovskiy в сообщении #273873 писал(а):
Нашол ошибку, получилось так:
Код:
RegExp rx("^[-+]?[1-9][0-9]{0,}\\.[1-9][0-9]{0,}(\\e[-+]?[1-9][0-9]{0,})?$");
А зачем бэкслэш перед 'e'? Кстати, тут может быть и 'E'.
Точка необязательна, да и цифры с одной стороны от точки.
Вот допустимые варианты, которые ваше выражение не примет:
.01
0.
001e001

 Профиль  
                  
 
 Re: регулярные выражения
Сообщение21.12.2009, 22:13 
Заслуженный участник


09/08/09
3438
С.Петербург
venco в сообщении #273887 писал(а):
То, что вы написали, это либо '(', либо '-', либо '|', либо '+', либо ')'.
Скорее, это либо от '(' до '|', либо '+', либо ')' :)

 Профиль  
                  
 
 Re: регулярные выражения
Сообщение21.12.2009, 22:26 


23/12/08
245
Украина
Да с допустимостю єто я погарячился :)

 Профиль  
                  
 
 Re: регулярные выражения
Сообщение22.12.2009, 02:17 
Заслуженный участник


04/05/09
4584
Maslov в сообщении #273903 писал(а):
venco в сообщении #273887 писал(а):
То, что вы написали, это либо '(', либо '-', либо '|', либо '+', либо ')'.
Скорее, это либо от '(' до '|', либо '+', либо ')' :)
Точно! Т.е. почти все ASCII символы, кроме !"#$%&'}~

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group