Как я генерирую текст, соответствующий регулярному выражению от регулярного выражения? [закрытый]

Конструкторы могут появиться где угодно в коде для класса. Однако условно большинство людей помещает их перед любыми другими функциями, которые не являются конструкторами.

Что касается имен переменной, все 6 являются на самом деле именами переменной, но объемом является differnet. Те указанные как параметры конструктору (startCadence, startSpeed, startGear) только доступны в конструкторе. Другие 3 (механизм, тактовый сигнал, скорость) являются, вероятно, переменными всего класса, доступными всем методам. Однако определение не показывают в Вашем фрагменте кода. Полный класс посмотрел бы mroe как:

class Bicycle
{
    // class-level variables
    private int gear;
    private int cadence;
    private int speed;

    // constructor
    public Bicycle(int startCadence, int startSpeed, int startGear) {
        gear = startGear;
        cadence = startCadence;
        speed = startSpeed;
    }

    // another method (not a constructor)
    public void ShiftUp() {
        gear = gear + 1; // notice the 'gear' variable is available here too.
    }
}

Hope, которая помогает!

27
задан Wilfred Springer 11 December 2014 в 19:23
поделиться

4 ответа

Я только что создал библиотеку для этого минуту назад. Он размещен здесь: http://code.google.com/p/xeger/ . Перед использованием внимательно прочтите инструкцию. (Особенно та, которая касается загрузки другой необходимой библиотеки.); -)

Вот как вы ее используете:

String regex = "[ab]{4,6}c";
Xeger generator = new Xeger(regex);
String result = generator.generate();
assert result.matches(regex);
17
ответ дан 28 November 2019 в 05:44
поделиться

Вот несколько реализаций такого зверя, но ни одна из них на Java (и все, кроме Microsoft с закрытым исходным кодом, очень ограничены в своей функции регулярного выражения поддержка).

2
ответ дан 28 November 2019 в 05:44
поделиться

Мне неизвестна такая библиотека. Если вы заинтересованы в написании одного из них самостоятельно, то, вероятно, вам нужно будет предпринять следующие шаги:

  1. Напишите синтаксический анализатор для регулярных выражений (вы можете начать с ограниченного класса регулярных выражений).

  2. Используйте результат для создания NFA .

  3. (Необязательно) Преобразуйте NFA в DFA .

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

Результат - слово, которое принимается исходным регулярным выражением. Для получения дополнительной информации см., Например, Преобразование регулярного выражения в детерминированный конечный автомат .

7
ответ дан 28 November 2019 в 05:44
поделиться

Вот реализация подобного модуля в Python: http://www.mail-archive.com/python-list@python.org/msg125198.html Она должна быть переносима на Java.

0
ответ дан 28 November 2019 в 05:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: