Сложность в том, что вы не можете легко определить диапазоны с помощью регулярных выражений.Но это может сделать то, что вы хотите:
\b([1-9]|1[0-8])\b
Вы можете увидеть это в действии здесь: http://regexr.com? 2v8jj
Вот пример в java:
String text = "24-15-7-49-63-2";
String pattern = "\\b([1-9]|1[0-8])\\b";
Pattern compiledPattern = Pattern.compile(pattern);
Matcher matcher = compiledPattern.matcher(text);
while (matcher.find()) {
System.out.println(matcher.group());
}
Выходы:
15
7
2
Редактировать: На основе комментария вы можете получить уникальные совпадения, используя этот шаблон:
\b([1-9]|1[0-8])\b(?!.*\b\1\b.*)
В действии: http://regexr.com? 2v8х