Java字符串拆分问题:如何按MRS得到预期拆分结果?
解决方案
调整拆分正则为正向前瞻断言,代码如下:
String input = "Alison Quek Yong Hoon MRS Alison Teng Yong Hoon"; String[] output = input.split("(?=\\s(MRS|MRS\\.))");
执行后得到的结果:
- Alison Quek Yong Hoon
- MRS Alison Teng Yong Hoon
原因说明
原代码使用的是(?<=(MRS\\s|MRS\\.)),这是正向后顾断言,它会在匹配到MRS 或MRS.的后方位置进行拆分,导致MRS被留在前半段。
而调整后的(?=\\s(MRS|MRS\\.))是正向前瞻断言,它会在匹配到 MRS或 MRS.的前方位置(也就是MRS前的空格之后)拆分,这样就将MRS及后续内容分到了后半段,符合预期结果。
内容的提问来源于stack exchange,提问作者Azka
相关产品推荐
相关产品推荐

