java.lang.StackOverflowError на Regexp
От: hl-man  
Дата: 16.05.13 16:41
Оценка:
Всем привет!

Есть такое РВ:
^(%[\\dA-F]{2}|[\\w\\-.~!$&'()*+,;=])*$

Оно используется для проверки правильности части hostname в URL.
Для более быстрого понимания объясню его суть: любое количество сочетаний закодированных символов (например %AA) или любого одиночного символа из множества -.~!$&'()*+,;= , включая "слвесные" символы. По-скольку теоретически в URL могут встречаться как закодированные так и незакодированные символы, то используется "альтернация" посредством |.
Вот из-за нее то и происходит StackOverflowError , когда мы пытаемся проверить строку на соответствие РВ, в случаях когда длина строки превышает примерно 1500.

Вопрос в том, можно ли как-то избежать использования палки "|" в данном случае?

Ну и конечно альтернативные предложения принимаются
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.