Вы можете сопоставить все слова, начинающиеся с a
, используя (?i)\ba\p{L}*\b
regex, поместить совпадения в список строк, переведя их в нижний регистр, затем отсортировать список и распечатать элементы:
String text = "A new report on the. state of American youth says!!!" +
" teenagers, are very concerned about the direction their nation is taking. ";
Pattern p = Pattern.compile("(?i)\\ba\\p{L}*\\b");
Matcher m = p.matcher(text);
List<String> res = new ArrayList<>();
while(m.find()) {
res.add(m.group().toLowerCase()); // Add to list turning to lower case
}
Collections.sort(res); // Sort
for (String s: res)
System.out.println(s); // Print
См. Демонстрацию Java в Интернете .
См. Демонстрацию регулярного выражения . Подробно:
(?i)
- режим без учета регистра \b
- граница слова a
- a
буква \p{L}*
- 0 и более букв \b
- граница слова.