Извините, но то, что вы все называете невозможным, - явно достижимая задача. Он не сможет дать результаты для ВСЕХ примеров и, возможно, не самые лучшие результаты, но вы можете дать ему различные подсказки, и это облегчит жизнь. Ниже приведено несколько примеров.
Кроме того, читаемый вывод, переводящий результат, был бы очень полезен.
Что-то вроде:
- "Поиск: слово, начинающееся с нецифровой буквы и заканчивающееся строкой:" ing ".
- или: Поиск: текст, содержащий bbb, затем где-то zzz
- или: * Поиск: шаблон, который выглядит так: «aa / bbbb / cccc», где «/» - разделитель, «aa» - две цифры, «bbbb» - слово любой длины, а «cccc» - четыре цифры в период с 1900 по 2020 год *
Может быть, мы могли бы создать «обратный переводчик» с языком типа SQL для создания регулярных выражений вместо создания его на geekish.
Вот несколько примеров, которые выполнимы:
class Hint:
Properties: HintType, HintString
enum HintType { Separator, ParamDescription, NumberOfParameters }
enum SampleType { FreeText, DateOrTime, Formatted, ... }
public string RegexBySamples( List<T> samples,
List<SampleType> sampleTypes,
List<Hint> hints,
out string GeneralRegExp, out string description,
out string generalDescription)...
regex = RegExpBySamples( {"11/November/1999", "2/January/2003"},
SampleType.DateOrTime,
new HintList( HintType.NumberOfParameters, 3 ));
regex = RegExpBySamples( "123-aaaaJ-1444",
SampleType.Format, HintType.Seperator, "-" );
GUI, где вы отмечаете образец текста или вводите его, добавление к регулярному выражению также возможно.
Сначала вы отмечаете дату («образец») и выбираете, если этот текст уже отформатирован, или если вы создаете формат, а также тип этого формата: свободный текст, форматированный текст, дата, GUID или Выбрать ... из существующих форматов (которые вы можете хранить в библиотеке).
Давайте разработаем спецификацию для этого и сделаем его открытым исходным кодом ... Кто-нибудь хочет присоединиться?