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

时间:2010-04-01 05:32:31

标签: java regex split

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

我正在JDK 1.5下编译

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

ab:Some string po:bubblegum

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

ab:Some string
po:bubblegum

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

String[] split = input.split("[..:]");

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

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

ab
Some String po
bubblegum

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

2 个答案:

答案 0 :(得分:4)

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

?=创建positive lookahead。这意味着引擎向前看,看看下一部分是否匹配,而不消耗该部分。如果它匹配,它会在空格字符上分割。 [A-Za-z]表示大写或小写字母,而{2}表示我们需要两个与该类匹配的字符。

答案 1 :(得分:1)

你问过Pattern#compile(String pattern)。如果你要使用正则表达式,你应该考虑使用它,因为前面提到的方法将正则表达式编译成快速执​​行的东西,而使用String#split(String regex)直接总是重新编译正则表达式。