Regex, чтобы разделить строку (в Java), чтобы сохранить пробелы? - PullRequest
1 голос
/ 02 июня 2010

Мне нужно разбить строку (в Java) на отдельные слова ... но мне нужно сохранить пробелы.

Пример текста, который мне нужно разбить, выглядит примерно так:
Азбука , , , ДЕФ. , , , ГХИ

Мне нужно увидеть «ABC», «...», «DEF», «...» и «GHI».

Очевидно, что разделение на символ пробела \s не сработает, так как все пробелы поглощаются как один пробел.

Есть предложения?

Спасибо

Ответы [ 2 ]

5 голосов
/ 02 июня 2010

Похоже, вы можете просто разделить на \b в этом случае ("\\b" как строковый литерал).

Как правило, вы хотите разделить на конструкции соответствия нулевой ширины, которые \b, но также можно использовать обходные пути.

Похожие вопросы


Разделение на основе пользовательской границы слова

Если \b не соответствует вашему определению, вы всегда можете определить свои собственные границы, используя утверждения.

Например, следующее регулярное выражение разделяется на границе между классом метасимволов X и его дополнением

(?=[X])(?<=[^X])|(?=[^X])(?<=[X])

В следующем примере мы определяем X как \d:

    System.out.println(java.util.Arrays.toString(
        "007james123bond".split(
            "(?=[X])(?<=[^X])|(?=[^X])(?<=[X])".replace("X", "\\d")
        )
    )); // prints "[007, james, 123, bond]"

Вот еще один пример, где X равно a-z$:

    System.out.println(java.util.Arrays.toString(
        "$dollar . . blah-blah   $more gimme".split(
            "(?=[X])(?<=[^X])|(?=[^X])(?<=[X])".replace("X", "a-z$")
        )
    )); // prints "[$dollar,  . . , blah, -, blah,    , $more,  , gimme]"
1 голос
/ 03 июня 2010

Спасибо, ребята, это дало мне преимущество, в котором я нуждался ... Я использую (?<=[\\s]), и это работает именно так, как я хочу!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...