我对正则表达式完全陌生,所以我在这里寻求一些帮助。
我正在JDK 1.5下编译
以此行为例,我从标准输入中读取:
ab:Some string po:bubblegum
我想做的是用两个字符和冒号分隔。也就是说,一旦将该行拆分并放入字符串数组中,这些应该是术语:
ab:Some string
po:bubblegum
我现在有这个正则表达式:
String[] split = input.split("[..:]");
将分割为分号;我想要的是它匹配两个字符和一个分号,但在开始之前在空格处分开。这甚至可能吗?
以下是字符串数组的输出:
ab
Some String po
bubblegum
我也读过有关Pattern.compile()的内容。这是我应该考虑的事情吗?
答案 0 :(得分:4)
input.split(" (?=[A-Za-z]{2}:)")
?=创建positive lookahead。这意味着引擎向前看,看看下一部分是否匹配,而不消耗该部分。如果它匹配,它会在空格字符上分割。 [A-Za-z]
表示大写或小写字母,而{2}
表示我们需要两个与该类匹配的字符。
答案 1 :(得分:1)
你问过Pattern#compile(String pattern)
。如果你要使用正则表达式,你应该考虑使用它,因为前面提到的方法将正则表达式编译成快速执行的东西,而使用String#split(String regex)
直接总是重新编译正则表达式。