正则表达式拆分字符串(在Java中),以便保留空格?

Dav*_*d G 1 java regex string split

我需要将一个字符串(用Java)拆分成单个单词......但我需要保留空格.

我需要拆分的文本示例如下:
ABC....DEF....GHI

我需要看"ABC","......","DEF","......"和"GHI".

显然,拆分空间角色\s是行不通的,因为所有空间都被吞没为一个空间.

有什么建议?

谢谢

pol*_*nts 5

看起来你可以\b在这种情况下拆分("\\b"作为字符串文字).

通常,您希望拆分零宽度匹配结构,\b也可以使用外观.

相关问题


基于自定义单词边界拆分

如果\b不符合您的定义,您可以始终使用断言定义自己的边界.

例如,以下正则表达式在元字符类X及其补码之间的边界上分割

(?=[X])(?<=[^X])|(?=[^X])(?<=[X])
Run Code Online (Sandbox Code Playgroud)

在以下示例中,我们定义X\d:

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

这里还有一个例子Xa-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]"
Run Code Online (Sandbox Code Playgroud)