Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Глюк движка регулярных выражений? / 4 сообщений из 4, страница 1 из 1
30.07.2004, 23:32
    #32630262
viper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк движка регулярных выражений?
Такой вот код рег выражения:

Код: plaintext
1.
2.
3.
4.
update(\s)*(\t)*(\\r\\n)*(\s)*(\t)*(\w)+(\s)*(\t)*(\\r\\n)*(\s)*(\t)*set(\s)*(\t)*(\\r\\n)*(\s)*(\t)*
((,)?(\w)+\.(\w)+(\s)*(\t)*(\\r\\n)*(\s)*(\t)*=(\s)*(\t)*(\\r\\n)*(\s)*(\t)*
(\w+\.)?((\w+|@\w+)|('(\s)*(\w)+(\s)*'|\w+\(*\)))(\s)*(\t)*(\\r\\n)*(\s)*(\t)*)+
(\s)*(\t)*(\\r\\n)*(\s)*(\t)*
from(\s)*(\t)*(\\r\\n)*(\s)*(\t)*aaa

Такой вот текст в котором ищем:
Код: plaintext
1.
2.
3.
4.
update card set  
     card.IsLocked =  1   
    ,card.EditAt  = GETDATE()  
    ,card.EditBy  = @emID_Edit   
  from test
Программа глохнет намертво, причем не только мой код и нетовский редактор рег выражений тоже ласты клеит... Может кто-то мне объяснит в чем прикол?
_________________________________________________
Легче написать не правильную программу чем понять правильную (С) Alan Perlis
...
Рейтинг: 0 / 0
30.07.2004, 23:38
    #32630266
viper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк движка регулярных выражений?
Есть конечно еще вариант что код рег выражения глюкавый, но почему нет эксепшена или хоть какогото знака что приехали? Причем зацикливание происходит не при поиске, а при попытке обратиться к результатам... Смотрел что тама в середине результатов в смысле, все свойства couldnt be defined...
:(
_________________________________________________
Легче написать не правильную программу чем понять правильную (С) Alan Perlis
...
Рейтинг: 0 / 0
30.07.2004, 23:41
    #32630268
viper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк движка регулярных выражений?
И в догонку,
Так все ок:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
update(\s)*(\t)*(\\r\\n)*(\s)*(\t)*(\w)+(\s)*(\t)*(\\r\\n)*(\s)*(\t)*set(\s)
*(\t)*(\\r\\n)*(\s)*(\t)*
((,)?(\w)+\.(\w)+(\s)*(\t)*(\\r\\n)*(\s)*(\t)*=(\s)*(\t)*(\\r\\n)*(\s)*(\t)*(\w+\.)?
((\w+|@\w+)|('(\s)*(\w)+(\s)*'|\w+\(.*\)))(\s)*(\t)*(\\r\\n)*(\s)*(\t)*)+
(\s)*(\t)*(\\r\\n)*(\s)*(\t)*
from(\s)*(\t)*(\\r\\n)*(\s)*(\t)*
update card set  
     card.IsLocked =  1   
    ,card.EditAt  = GETDATE()  
    ,card.EditBy  = @emID_Edit   
  from test
И так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
update(\s)*(\t)*(\\r\\n)*(\s)*(\t)*(\w)+(\s)*(\t)*(\\r\\n)*(\s)*(\t)*set(\s)
*(\t)*(\\r\\n)*(\s)*(\t)*
((,)?(\w)+\.(\w)+(\s)*(\t)*(\\r\\n)*(\s)*(\t)*=(\s)*(\t)*(\\r\\n)*(\s)*(\t)*
(\w+\.)?
((\w+|@\w+)|('(\s)*(\w)+(\s)*'|\w+\(.*\)))(\s)*(\t)*(\\r\\n)*(\s)*(\t)*)+
(\s)*(\t)*(\\r\\n)*(\s)*(\t)*
from(\s)*(\t)*(\\r\\n)*(\s)*(\t)*test
update card set  
     card.IsLocked =  1   
    ,card.EditAt  = GETDATE()  
    ,card.EditBy  = @emID_Edit   
  from test
А в исходном варианте хрен...
_________________________________________________
Легче написать не правильную программу чем понять правильную (С) Alan Perlis
...
Рейтинг: 0 / 0
30.07.2004, 23:55
    #32630269
viper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк движка регулярных выражений?
Ну сам спросил сам и отвечу, правильный вариант выражения оказался:
Код: plaintext
update .* set .* = .* from .* test
Как все бывает просто...
Но объяснить поведение движка я всеравно не могу :(
_________________________________________________
Легче написать не правильную программу чем понять правильную (С) Alan Perlis
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Глюк движка регулярных выражений? / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]