Официальный сайт студ.городка НГТУ
Программирование и БД » Регулярные выражения. Гипотетическая нагрузка на сервер 

#1  11.07.08 09:46

Регулярные выражения. Гипотетическая нагрузка на сервер

Хотелось бы услышать мнение специалистов по регулярным выражениям. Способно ли какое-либо регулярное выражение, скажем, проверяющее корректность e-mail адреса, загрузить сервак до 100% при определенных входных данных?

Offline

#2  11.07.08 10:19

Re: Регулярные выражения. Гипотетическая нагрузка на сервер

при неправильно написанном регулярном выражении - может...

Offline

#3  11.07.08 12:51

Re: Регулярные выражения. Гипотетическая нагрузка на сервер

может на клиенте лучше проверять?)

Offline

#4  11.07.08 12:54

Re: Регулярные выражения. Гипотетическая нагрузка на сервер

wixus, а я вот отключу яваскрипт и какой-нить зловредный код напишу и всё. проверять надо на сервере

Offline

#5  11.07.08 13:04

Re: Регулярные выражения. Гипотетическая нагрузка на сервер

гипотетически может но я думаю это редко может произойти. Вот запросы sql в легкую подгружают сервак. На работе частетнько бывает что из-за одного запроса локается вся база в результате чего нагрузка дико растет.

А разве для проверки корректности мыла достаточно сложный регексп?

Исправлено Unclead (11.07.08 13:05)

Offline

#6  11.07.08 13:05

Re: Регулярные выражения. Гипотетическая нагрузка на сервер

дЕЛ

Исправлено Unclead (11.07.08 13:05)

Offline

#7  11.07.08 13:53

Re: Регулярные выражения. Гипотетическая нагрузка на сервер

что-то вроде этого
^[a-zA-Z0-9\-\_\.\+]+@[a-zA-Z0-9\-\.]+\.[a-zA-Z0-9]{2,6}$

Offline

#8  11.07.08 14:03

Re: Регулярные выражения. Гипотетическая нагрузка на сервер

Antony, тогда ты редиска и придётся тебя забанить)

Offline

#9  11.07.08 15:34

Re: Регулярные выражения. Гипотетическая нагрузка на сервер

wixus, это если останется то, на чём ты собрался меня банить:)

Offline

#10  11.07.08 15:38

Re: Регулярные выражения. Гипотетическая нагрузка на сервер

Antony, вроде в спамассасине прописано примерно такое:

Код: perl:

# REGEX for check address
my $local_part = qr/(?-xism:(?-xism:(?-xism:(?-xism:\s*\((?:\s*(?-xism:(?-xism:(?>[^()\\]+))|(?-xism:\\(?-xism:[^\x0A\x0D]))|(?-xism:\s*\((?:\s*(?-xism:(?-xism:(?>[^()\\]+))|(?-xi
sm:\\(?-xism:[^\x0A\x0D]))|)+)*\s*\)\s*))+)*\s*\)\s*)+|\s+)*(?-xism:[^\x00-\x1F\x7F()<>\[\]:;@\,."\s]+(?:\.[^\x00-\x1F\x7F()<>\[\]:;@\,."\s]+)*)(?-xism:(?-xism:\s*\((?:\s*(?-xism:
(?-xism:(?>[^()\\]+))|(?-xism:\\(?-xism:[^\x0A\x0D]))|(?-xism:\s*\((?:\s*(?-xism:(?-xism:(?>[^()\\]+))|(?-xism:\\(?-xism:[^\x0A\x0D]))|)+)*\s*\)\s*))+)*\s*\)\s*)+|\s+)*)|(?-xism:(
?-xism:(?-xism:\s*\((?:\s*(?-xism:(?-xism:(?>[^()\\]+))|(?-xism:\\(?-xism:[^\x0A\x0D]))|(?-xism:\s*\((?:\s*(?-xism:(?-xism:(?>[^()\\]+))|(?-xism:\\(?-xism:[^\x0A\x0D]))|)+)*\s*\)\
s*))+)*\s*\)\s*)+|\s+)*"(?-xism:(?-xism:[^\\"])|(?-xism:\\(?-xism:[^\x0A\x0D])))+"(?-xism:(?-xism:\s*\((?:\s*(?-xism:(?-xism:(?>[^()\\]+))|(?-xism:\\(?-xism:[^\x0A\x0D]))|(?-xism:
\s*\((?:\s*(?-xism:(?-xism:(?>[^()\\]+))|(?-xism:\\(?-xism:[^\x0A\x0D]))|)+)*\s*\)\s*))+)*\s*\)\s*)+|\s+)*))/;
my $domain = qr/(?-xism:(?-xism:(?-xism:(?-xism:\s*\((?:\s*(?-xism:(?-xism:(?>[^()\\]+))|(?-xism:\\(?-xism:[^\x0A\x0D]))|(?-xism:\s*\((?:\s*(?-xism:(?-xism:(?>[^()\\]+))|(?-xism:\
\(?-xism:[^\x0A\x0D]))|)+)*\s*\)\s*))+)*\s*\)\s*)+|\s+)*(?-xism:[^\x00-\x1F\x7F()<>\[\]:;@\,."\s]+(?:\.[^\x00-\x1F\x7F()<>\[\]:;@\,."\s]+)*)(?-xism:(?-xism:\s*\((?:\s*(?-xism:(?-x
ism:(?>[^()\\]+))|(?-xism:\\(?-xism:[^\x0A\x0D]))|(?-xism:\s*\((?:\s*(?-xism:(?-xism:(?>[^()\\]+))|(?-xism:\\(?-xism:[^\x0A\x0D]))|)+)*\s*\)\s*))+)*\s*\)\s*)+|\s+)*)|(?-xism:(?-xi
sm:(?-xism:\s*\((?:\s*(?-xism:(?-xism:(?>[^()\\]+))|(?-xism:\\(?-xism:[^\x0A\x0D]))|(?-xism:\s*\((?:\s*(?-xism:(?-xism:(?>[^()\\]+))|(?-xism:\\(?-xism:[^\x0A\x0D]))|)+)*\s*\)\s*))
+)*\s*\)\s*)+|\s+)*\[(?:\s*(?-xism:(?-xism:[^\[\]\\])|(?-xism:\\(?-xism:[^\x0A\x0D])))+)*\s*\](?-xism:(?-xism:\s*\((?:\s*(?-xism:(?-xism:(?>[^()\\]+))|(?-xism:\\(?-xism:[^\x0A\x0D
]))|(?-xism:\s*\((?:\s*(?-xism:(?-xism:(?>[^()\\]+))|(?-xism:\\(?-xism:[^\x0A\x0D]))|)+)*\s*\)\s*))+)*\s*\)\s*)+|\s+)*))/;

Offline

#11  11.07.08 19:35

Re: Регулярные выражения. Гипотетическая нагрузка на сервер

На клиенте регекс работает нормально, а вот на ASP.NET странице, при проверке одного из емейлов, стал валить сервак со 100% нагрузкой. Не думал, что такое возможно

Offline

#12  11.07.08 20:07

Re: Регулярные выражения. Гипотетическая нагрузка на сервер

может ошибка в синтаксисе? вона ие у меня частенько валится

Offline

#13  11.07.08 21:03

Re: Регулярные выражения. Гипотетическая нагрузка на сервер

Как оказалось, забыли написать слеш перед точкой, т.е. обычная опечатка

Offline

#14  11.07.08 22:13

Re: Регулярные выражения. Гипотетическая нагрузка на сервер

ну в данной ситуации я бы не сказал, что это обычная опечатка:) не мудрено, что валило сервак

Offline

#15  11.07.08 22:53

Re: Регулярные выражения. Гипотетическая нагрузка на сервер

регулярные выражения работают быстро, другой вопрос что там придумает программист :)
обычно все проблемы производительности из-за "жадности" алгоритма (которая нужна не всегда, просто так получается), что и получилось в данном случае

Offline

#16  12.07.08 13:41

Re: Регулярные выражения. Гипотетическая нагрузка на сервер

Есть мнение, что многое зависит и от реализации алгоритма разбора regex'a. На сколько мне известно. сейчас самыми распространенными являются стандарты PCRE (детерминированный конечный автомат) и POSIX (недетерминированный конечный автомат). В зависимости от конкретного примера regex'a разница в обработке может отличаться в тысячи, однако, зачастую PCRE всё же выигрывает у POSIX.

Offline

Программирование и БД » Регулярные выражения. Гипотетическая нагрузка на сервер 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.102 сек.
Выполнено 14 запросов.