#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 делает то же самое, но это бесплатно, а интерфейс потрясающий. 🙂