Вы можете использовать вариацию (?<!\S)\S+(?!\S)
, то есть любую максимальную последовательность непробельных символов.
- Используются отрицательные обходные пути, чтобы они могли соответствовать «словам» в начале и концестрока
- Замените собственный класс символов на
\S
, чтобы найти что-то более конкретное - (например,
[A-Za-z-]
и т. д.)
Вот простой пример, иллюстрирующий идею, используя [a-z-]
в качестве класса символов алфавита:
String text = "--xx128736f-afasdf2137asdf-12387-kjs-23xx--";
Pattern p = Pattern.compile(
"(?<!alpha)alpha+(?!alpha)".replace("alpha", "[a-z-]")
);
Matcher m = p.matcher(text);
while (m.find()) {
System.out.println(m.group());
}
Это печатает:
--xx
f-afasdf
asdf-
-kjs-
xx--
Ссылки
Но каким должен быть алфавит?
Вы можетедолжны использовать классы символов Unicode и т. д. (оставайтесь на месте, изучая тему прямо сейчас)