[regexp][java] Преобразования регэкспов в человекочитабельный формат

kill-still

Как бы преобразовывать простые регэкспы в человекочитабельную маску так, чтобы самому не изобретать велосипед писать парсер? Например есть такой регэксп (выбрал самый сложный):
\d{2}\.\d{1,2})|(\.\d{2}\.\d{1,2}?
выдать что-нибудь в духе
**
**.*
**.**
**.**.*
**.**.**
чтобы юзверю было понятно, как ему надо правильно заполнять поле?

Dimon89

Берешь пустую строку и дописываешь в неё рекурсивно либо точку, либо звездочку. Если проходит регэксп - выдаёшь пользователю как пример.

kill-still

Не, так не получится. :(
Как понять, когда закачивать рекурсию?
Ещё вот примерчик нашёл:
\d{1,10}-\d{1,10}-\d{1,170}(-\d{1,10})?
Вообще что-то хз, как его информативно отобразить. =/
Это в таком формате некоторые(не будем тыкать пальцем) хранят телефон.

val63


d{1,170}
Это на альфу центавру чоле?

kill-still

я хз, как это с E.164 соотносится.
Короче придётся распарсивать с конечным набором стейтментов.

Serab

их там так много этих регэкспов? Нельзя ручками примеры подобрать?

kill-still

Дофига. Но если темплейтами мерять, то штук 50наверное выйдет всего лишь. Причём 90% из них \d{N} или \d{N1,N2} или \d{N1}|\d{N2} с различными N. Но в любом случае у меня нет желания сюда ещё хотя бы раз в ближайшие 100500лет залезать. Так что лучше написать чтобы оно в общем случае работало и забить на ближайшие N лет.

zya369

если выражения однообразные и несложные, то можно попробовать хранить их не в виде строк, а в виде каких-нить структур, из которых легко и однозначно можно сгенерить и regexp и человеческое описание

uncle17

о, бл, мне бы сейчас придумать такие структуры под все ипотечные программы :(

zya369

придумай, чо

uncle17

у меня мозгов не хватит, я ж в банке только недавно

Dimon89

Не, так не получится. Как понять, когда закачивать рекурсию?
Как только наберёшь N = 5-10 примеров, очевидно.

zya369

а в банке чо, мозги дают? или на что ты надеешься? :grin:

kill-still

Спаибо кэп, но это рестрикты на поля в xsd.
Оставить комментарий
Имя или ник:
Комментарий: