Java 1.6中如何仅在首个匹配正则位置分割字符串?
解决方案
在Java 1.6中,你可以使用**正向预查(positive lookahead)**来精准定位需要分割的位置,避免分割所有逗号加空格的场景。
核心思路
你需要分割的是逗号+空格后紧跟数字的位置,而其他逗号+空格后是字母,不需要分割。利用正则的正向预查(?=[0-9]),可以匹配到满足"后面是数字"条件的逗号空格,只在这个位置执行分割。
具体实现代码
public class SplitDemo { public static void main(String[] args) { String inputStr = "123456 - A, Bcd, 789101 - E, Fgh"; // 带正向预查的分割正则 String[] resultParts = inputStr.split(",\\s(?=[0-9])"); // 打印分割结果 for (String part : resultParts) { System.out.println(part); } } }
代码细节解释
,\\s:匹配目标字符串中的"逗号+空格"字符组合(?=[0-9]):正向预查断言,确保当前匹配的"逗号+空格"后面紧跟一个数字(也可以用\\d替代[0-9],Java 1.6同样支持)- 整个正则只会匹配到"Bcd"后面的", "(因为它后面是数字7),而"A"后面的", "后面是字母B,不会被匹配到,因此split只会在你需要的位置分割字符串。
运行输出结果
执行上述代码后,会得到你想要的两个分割结果:
123456 - A, Bcd 789101 - E, Fgh
内容的提问来源于stack exchange,提问作者A. Jachs
相关产品推荐
相关产品推荐

