Похоже, вы можете просто разделить на \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]"