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

时间:2010-06-02 19:52:23

标签: java regex string split

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

我需要拆分的文字示例如下:
ABC。 。 。 。 DEF。 。 。 。 GHI

我需要看“ABC”,“......”,“DEF”,“......”和“GHI”。

显然,对空格字符\s进行拆分不会起作用,因为所有空格都被吞没为一个空格。

有什么建议吗?

由于

2 个答案:

答案 0 :(得分:5)

在这种情况下,您似乎可以在\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]"

以下是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]"

答案 1 :(得分:1)

谢谢大家,这给了我所需的领导......我正在使用(?<=[\\s]),它的工作方式与我想要的完全一致!