Можно ли создать пример строки на основе шаблона регулярных выражений? - PullRequest
14 голосов
/ 28 июня 2010

В моем приложении пользователь может ввести свой собственный шаблон регулярных выражений в текстовое поле, чтобы он мог принудительно ввести определенный ввод для другого пользователя / текстового поля. Может ли пользователь увидеть пример строки, которая бы соответствовала введенному им регулярному выражению? Например, если он введет: ^[A-Z]{2}$, он сгенерирует строку типа "XX", чтобы показать пользователю, что он может ввести только две заглавные буквы.

Если нет простого способа сделать это (а я полагаю, что нет), насколько сложно будет это построить? Или что-то подобное уже существует?

Ответы [ 3 ]

8 голосов
/ 23 ноября 2011

Для C # вы также можете посмотреть на проект Тариф . Для получения более подробной информации смотрите этот ответ.

Пример

var regex = @"((mailto\:|(news|(ht|f)tp(s?))\://){1}\S+)";
var xeger = new Xeger(regex);

var result = Regex.IsMatch(xeger.Generate(), regex);
// -> Prints 'true'
8 голосов
/ 28 июня 2010

Выезд Xeger .Похоже, он может делать то, что вы хотите.Хотя это на Java.

Вот пример из набора тестов:

   @Test
    public void shouldGenerateTextCorrectly() {
        String regex = "[ab]{4,6}c";
        Xeger generator = new Xeger(regex);
        for (int i = 0; i < 100; i++) {
            String text = generator.generate();
            assertTrue(text.matches(regex));
        }
    }

Обновление : благодаря Никосу Баксеванису, dk.brics.automaton былпортирован на C # на https://github.com/moodmosaic/Fare

0 голосов
/ 23 апреля 2014

Когда-то мне тоже это было нужно, поэтому я создал простую программу с графическим интерфейсом пользователя, используя xeger lib, упомянутый выше. Просто запустите .jar из папки dist (требуется jre) https://github.com/ogyct/SampleFromRegex

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...