Java正则表达式:用OR条件拆分含数字与LM的字符串
解决Java字符串拆分问题:按数字或"LM"开头拆分
问题分析
你需要的拆分规则对应两个场景:
- 在非字符串开头的数字字符前拆分(原正则已实现该逻辑)
- 在精确匹配的"LM"序列起始位置拆分(把LM单独拆成独立元素)
之前尝试的|('LM')逻辑错误:它是把"LM"本身作为分隔符来拆分,会直接从结果中剔除LM,完全不符合需求。
正确正则与代码
将两个拆分位置用正向预查组合,正确的拆分正则如下:
"(?<!^)(?=\\d)|(?=LM)"
对应的Java代码:
List<String> diff = Arrays.asList(inputString.split("(?<!^)(?=\\d)|(?=LM)"));
验证示例
- 输入
1LM355PL6R5L8,拆分结果:[1,LM,3,5,5PL,6R,5L,8] - 输入
349AB8LM7Y4II,拆分结果:[3,4,9AB,8,LM,7Y,4II]
正则逻辑解释
(?<!^)(?=\d):保留原有逻辑——仅在非字符串开头、且后面紧跟数字的位置拆分(?=LM):匹配后面紧跟"LM"的位置,在这里拆分可将LM单独拆为一个元素,实现前面内容与LM的分离
内容的提问来源于stack exchange,提问作者jasmeet
相关产品推荐
相关产品推荐

