Мне нужно получить текст, разделенный с помощью регулярных выражений в Java (каждая подстрока будет меньше или близка к 10 символам (включая пробел и специальные), и ни одно слово не будет разбито).Например, «Джеймс вышел на обед».будет "Джеймс", "вышел", "на обед", "."Заранее спасибо.
Сначала удалите все двойные пробелы, если они существуют, и примените это регулярное выражение.
.{1,11}(?:\s|$)|.{1,11}(?:[^\s]|$)
Но я бы использовал функцию разбиения, а затем вычислял длины для выражения "предложение".
Это выражение может быть немного сложным, может быть, мы могли бы начать с:
.{1,10}[^\s](?=\s|$)
import java.util.regex.Matcher; import java.util.regex.Pattern; final String regex = ".{1,10}[^\\s](?=\\s|$)"; final String string = "James has gone out for a meal."; 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)); for (int i = 1; i <= matcher.groupCount(); i++) { System.out.println("Group " + i + ": " + matcher.group(i)); } }
jex.im визуализирует регулярные выражения: