Java通过自定义正则表达式匹配分割字符串

tsl*_*kan 3 java regex split

我对正则表达式完全陌生,所以我在这里寻求一些帮助。

我在JDK 1.5下编译

以我从标准输入读取的这一行为例:

ab:Some string po:bubblegum
Run Code Online (Sandbox Code Playgroud)

我想做的是由两个字符和冒号分割。也就是说,一旦该行被分割并放入字符串数组中,这些术语应该是:

ab:Some string
po:bubblegum
Run Code Online (Sandbox Code Playgroud)

我现在有这个正则表达式:

String[] split = input.split("[..:]");
Run Code Online (Sandbox Code Playgroud)

分号处分开;我想要的是它匹配两个字符和一个分号,但在开始之前的空格处分开。这可能吗?

这是字符串数组的输出:

ab
Some String po
bubblegum
Run Code Online (Sandbox Code Playgroud)

我也读过有关 Pattern.compile() 的内容。这是我应该考虑的事情吗?

Mat*_*hen 5

input.split(" (?=[A-Za-z]{2}:)")
Run Code Online (Sandbox Code Playgroud)

?= 创建正向前瞻。这意味着引擎会向前查看下一个部分是否匹配,而不消耗该部分。如果匹配,则会根据空格字符进行分割。 [A-Za-z]表示大写或小写字母,同时{2}指定我们想要两个与该类匹配的字符。