Разделить текст с помощью регулярных выражений в Java - PullRequest
0 голосов
/ 29 мая 2019

Мне нужно получить текст, разделенный с помощью регулярных выражений в Java (каждая подстрока будет меньше или близка к 10 символам (включая пробел и специальные), и ни одно слово не будет разбито).Например, «Джеймс вышел на обед».будет "Джеймс", "вышел", "на обед", "."Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 29 мая 2019

Сначала удалите все двойные пробелы, если они существуют, и примените это регулярное выражение.

.{1,11}(?:\s|$)|.{1,11}(?:[^\s]|$)

Но я бы использовал функцию разбиения, а затем вычислял длины для выражения "предложение".

1 голос
/ 29 мая 2019

Это выражение может быть немного сложным, может быть, мы могли бы начать с:

.{1,10}[^\s](?=\s|$)

DEMO

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));
    }
}

RegEx Circuit

jex.im визуализирует регулярные выражения:

enter image description here

...