Re[4]: Регулярные выражения
От: AlexGK Россия  
Дата: 15.09.06 21:31
Оценка:
Здравствуйте, kan, Вы писали:

kan>AlexGK wrote:


kan>Можно. А почему не работает — не знаю, надо конкретный случай рассматривать, приводи код, может надо слеш удвоить?

kan>А если работает, то, скажем "12!23" матчит?

Ну видимо, потому что использую boost::regex там стиле Perl но видимо не все.

У меня получилось в конце концов такое выражение:

[[:space:]]{0,}((((([0-9]{1,}[\.]{1}[0-9]{1,})|([0-9]{1,}[\.]{1})|([\.]{1}[0-9]{1,})|([0-9]{1,}))|(([+-]{1}[[:space:]]{0,}[0-9]{1,}[\.]{1}[0-9]{1,})|([+-]{1}[[:space:]]{0,}[0-9]{1,}[\.]{1})|([+-]{1}[[:space:]]{0,}[\.]{1}[0-9]{1,})|([+-]{1}[[:space:]]{0,}[0-9]{1,}))){0,1}([[:space:]]{0,}[eE][[:space:]]{0,}[+-]{0,1}[[:space:]]{0,}[0-9]{1,}){0,1})|([+-]{0,1}[[:space:]]{0,}[eE][[:space:]]{0,}[+-]{0,1}[[:space:]]{0,}[0-9]{1,}))[[:space:]]{0,}


Работае корректно, такая трех этажность обусловлена тем, что я не знаю как записать такое выражение:

допустим есть лексемы A B C D, нужно что-то типа A&(B|C|D) ? где & — справделиво только в случае если справделивы обе части, а | — это не чисто или, а допускающее сочетания, т.е. B BC BCD BD CD
Я пробовал сделать в виде:
A{0,1}(B{0,1}C{0,1}D{0,1}){1} Но выражение в скобках в таком случае может быть пустым, поэтому выражени корректно если в тексте есть только A.
Как записать такое выражение в компактном виде, не перебирая сочетаний?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.