Регулярное выражение: числовой диапазон java

#java #regex

#java #регулярное выражение

Вопрос:

У меня есть небольшой генератор, который позволяет мне создавать строку из регулярного выражения. Для чего-то вроде немецкого номерного знака это довольно легко сделать. ([A-Z]{1,3}[- ][A-Z]{1,2}[0-9]{1,4}) -> например, «CD-B802»

 public String generate() {
    String forReturn = null;
    for (String rule : Generator.read(fileRegexConfig)) {
        try {
            Xeger generator = new Xeger(rule);
            forReturn  = generator.generate();
        } catch (Exception e) {
            System.err.println(rule   ':'   e.getMessage());
        }
    }
    return forReturn;
}

public static String[] read(String str) {
    List<String> list = new ArrayList<String>();
    try {
        BufferedReader in = new BufferedReader(new FileReader(str));
        String zeile = null;
        while ((zeile = in.readLine()) != null) {
            if (zeile != null amp;amp; zeile.trim().length() > 0)
                list.add(zeile);
        }
        in.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return (String[]) list.toArray(new String[0]);
}
  

Проблема, с которой я сталкиваюсь, заключается в том, как я могу создать регулярное выражение для диапазона int. Например, я пытаюсь найти способ описать область действия, например [37-78] .

согласно http://www.regular-expressions.info/numericranges.html это легко описать [0-x], но я не могу найти способ решить свою проблему.

Ответ №1:

RegexForRange может вам помочь:

Чтобы соответствовать диапазону [37;78]: (3[7-9]|[4-6][0-9]|7[0-8])

Комментарии:

1. 1 Спасибо sp00m, не знал этого сайта. Я считаю, что Jan RegexMagic делает то же самое, но это бесплатно, а интерфейс потрясающий. 🙂