我需要将一个字符串(用Java)拆分成单个单词......但我需要保留空格。
我需要拆分的文字示例如下:
ABC。 。 。 。 DEF。 。 。 。 GHI
我需要看“ABC”,“......”,“DEF”,“......”和“GHI”。
显然,对空格字符\s
进行拆分不会起作用,因为所有空格都被吞没为一个空格。
有什么建议吗?
由于
答案 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]"
以下是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 :(得分:1)
谢谢大家,这给了我所需的领导......我正在使用(?<=[\\s])
,它的工作方式与我想要的完全一致!