Спосіб 1
Межі слів тут чудово працювали б, наприклад, з:
\b\w{3,8}\b
\b\w{2,}
\b\w{,10}\b
\b\w{5}\b
Java
Деякі мови, такі як Java та C ++, потребують подвійного екранування:
\\b\\w{3,8}\\b
\\b\\w{2,}
\\b\\w{,10}\\b
\\b\\w{5}\\b
PS: \\b\\w{,10}\\bможе працювати не для всіх мов чи смаків.
Тест 1
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegularExpression{
public static void main(String[] args){
final String regex = "\\b\\w{3,8}\\b";
final String string = "words with length three to eight";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
}
}
}
Вихід 1
Full match: words
Full match: with
Full match: length
Full match: three
Full match: eight
Спосіб 2
Ще одним добре знаним методом є використання негативних оглядів:
(?<!\w)\w{3,8}(?!\w)
(?<!\w)\w{2,}
(?<!\w)\w{,10}(?!\w)
(?<!\w)\w{5}(?!\w)
Java
(?<!\\w)\\w{3,8}(?!\\w)
(?<!\\w)\\w{2,}
(?<!\\w)\\w{,10}(?!\\w)
(?<!\\w)\\w{5}(?!\\w)
Тест 2
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegularExpression{
public static void main(String[] args){
final String regex = "(?<!\\w)\\w{1,10}(?!\\w)";
final String string = "words with length three to eight";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
}
}
}
Вихід 2
Full match: words
Full match: with
Full match: length
Full match: three
Full match: to
Full match: eight
Схема RegEx
jex.im візуалізує регулярні вирази:

Якщо ви хочете спростити / змінити / дослідити вираз, це було пояснено на верхній правій панелі regex101.com . Якщо ви хочете, ви також можете подивитися за цим посиланням , як це буде відповідати деяким зразкам входів.
String.length()?