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

Java通过自定义正则表达式匹配拆分字符串,java,regex,split,Java,Regex,Split,我对正则表达式完全陌生,所以我在这里寻求一些帮助 我是在JDK1.5下编译的 以这一行为例,我从标准输入中读取: ab:Some string po:bubblegum 我想做的是用两个字符和冒号分开。也就是说,一旦行被拆分并放入字符串数组中,以下术语应为: ab:Some string po:bubblegum 我现在有这个正则表达式: String[] split = input.split("[..:]"); 这在分号处分开;我希望它匹配两个字符和一个分号,但在开始之前在空格处拆分。

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

我是在JDK1.5下编译的

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

ab:Some string po:bubblegum
我想做的是用两个字符和冒号分开。也就是说,一旦行被拆分并放入字符串数组中,以下术语应为:

ab:Some string
po:bubblegum
我现在有这个正则表达式:

String[] split = input.split("[..:]");
这在分号处分开;我希望它匹配两个字符和一个分号,但在开始之前在空格处拆分。这可能吗

以下是字符串数组的输出:

ab
Some String po
bubblegum
我也读过Pattern.compile。这是我应该考虑的吗

input.split(" (?=[A-Za-z]{2}:)")

这个?=创建了一个。这意味着引擎向前看,看下一个零件是否匹配,而不消耗该零件。如果匹配,则在空格字符上拆分。[A-Za-z]表示大写或小写字母,而{2}指定需要两个字符匹配该类。

您询问过。如果你打算使用正则表达式,你应该考虑使用它,因为上面提到的方法将正则表达式编译成快速执行的东西,而直接使用总是编译正则表达式。非常感谢。你能解释一下它是如何工作的吗?我可以理解它是在寻找两个大写或小写字符,然后是冒号,但就是这样。太好了,再次谢谢。是的,谢谢。我刚刚用Matthew的正则表达式实现了它,它仍然有效。