Ответ 1
Там, скорее всего, не один. Причина в том, что нельзя точно сказать. Все, что вы можете придумать, будет эвристическим.
Эвристический:
- Если шаблон ищет что-то, содержащее точку, а затем знак @, за которым следует что-то, содержащее точку, - это проверка электронной почты.
- Если шаблон содержит только
\d
или диапазоны номеров ([1-5]
) или одиночные числа (7
) плюс метасимволы повторения (?
,*
,+
,{4, 12}
), это числовая проверка. - Если шаблон содержит знак
\w
и @, это обычный текст. -
Продолжайте действовать в том же духе.
- + высокий контроль. Вы всегда можете добавить новые догадки, когда увидите, что ваши результаты не точны в некотором случае.
- - требуется больше кода для реализации
- - требует очень хорошего знания регулярных выражений
Эвристические два:
Используйте список строк, которые вы знаете, тип и попытайтесь сопоставить их с регулярным выражением. Aka, для электронной почты попробуйте [email protected]
.
- + легко реализовать. Маловероятная проблемная логика
- - наименьшее количество контроля. Если сервер дает вам шаблоны электронной почты для разных доменов, вы не можете догадаться, что это шаблон электронной почты, если вы не знаете все возможные домены
Эвристическая три:
Используйте библиотеку, которая может генерировать строки примеров из регулярного выражения и сопоставлять их с вашими регулярными выражениями для определения типа. Вот один из Java и еще один для JavaScript.
- + дает хорошее сочетание высокого контроля и легкой реализации
- - вам все равно придется писать собственные регулярные выражения (не так тривиально, как 2-я эвристика)
- - люди иногда пишут регулярные выражения, которые допускают некоторые ложные срабатывания. Следовательно, созданные строки могут быть не в идеальном формате (не так много контроля, как первая эвристика)
Являются ли статические регулярные выражения?
- Если да - вы должны сделать сопоставление и использовать это.
- Если нет - используйте эвристику, подобную одному из вышеперечисленных, и улучшайте ее со временем, когда вы получите больше статистических данных о том, как обычно выглядят сгенерированные регулярные выражения.