正则表达式:数字范围java

时间:2014-06-18 10:09:22

标签: java regex

我有一个小生成器,它允许我用正则表达式创建一个字符串。对于像德国车牌这样的东西,它很容易做到。 ([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 && 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 个答案:

答案 0 :(得分:3)

RegexForRange可以帮到你:

匹配范围[37; 78]:(3[7-9]|[4-6][0-9]|7[0-8])