Или вы можете рассматривать индикаторы как отдельные слова и разбирать их позже:
Pattern p = Pattern.compile("[a-zA-Z]+|%[a-z]%");
Кстати, вы не должны использовать [a-zA-Z]
для текстов на естественном языке - даже английский текст может содержать такие слова, как café
, имена типа Björn и т. Д. Для этого java.util.regex.Pattern поддерживает предопределенные классы символов для букв \p{L}
наряду с \p{Ll}
(только строчные буквы) и \p{Lu}
(только заглавные буквы), которые будут соответствовать такимслова просто отлично.