Можно ли (если да, то как?) заменить первую строчную букву первого слова на заглавную через регулярные выражения в java?
У меня несколько предложений
this text has two sentences. this is the second one. Aggf. fgjdfg dfgjjdf dkkldf. FGjdfgj. lLIFgrkg
Некоторые из них начинаются со строчной буквы. Можно ли заменить их на заглавные через регулярные выражения (java) и если да, то как?
Захват первых строчных букв первых слов ^[a-z]|(?<=\.\s)[a-z]
String s = "this text has two sentences. this is the second one. Aggf. fgjdfg dfgjjdf dkkldf. FGjdfgj. lLIFgrkg";
Pattern p = Pattern.compile("(:?^|\\.)\\s?\\w");
Matcher m = p.matcher(s);
StringBuilder sb = new StringBuilder();
while (m.find()){
String match = m.group();
m.appendReplacement(sb, match.toUpperCase());
}
m.appendTail(sb);
System.out.println(sb.toString());
Developer, ни автор вопроса, ни я ничего про чистое и не писали. В приведённом примере поиск кандидатов на замену и сама замена делаются матчером регулярки. Вполне соответствует тому, что искал автор вопроса, как мне кажется.
Правильный ответ - нет. Функционал регулярок - это найти и указать найденное. Вы можете посмотреть как работает Pattern/Matcher в паре. Они просто находят группы выражений и указывают пальцем дескыть вот здесь матчинг подошел.
Но есть API языков программирования такой как String::replace который позволяет с ИСПОЛЬЗОВАНИЕМ
регулярок найти-и-заменить одной операцией.
Но данную конкретную операцию - капитализацию первой буквы в Java-строке я-бы сделал просто через substring() и toUpper(). Это будет по времени в сотни раз быстрее т.к. мы не будем вовлекать в процесс компилляцию паттерна регулярок. Грубо говоря если ты решил пальнуть по птичкам - то бери рогатку. Пушка тебе не нужна.