我的Java Web服务的输入是用逗号分隔的字符串列表(“ ABC1,ABCD2,A1,A234B456,C1”)。
如果我的分割阈值为2,则需要将其分割为
ABC1,ABCD2
A1,A234B456
C1
如果我的分割阈值为3,则需要将其分割为
ABC1,ABCD2,A1
A234B456,C1
我正在尝试找出执行此操作的Java正则表达式。我尝试签出StringUtils API,但没有运气。
最佳答案
您可以使用以下正则表达式:
((?:[^,]*,[^,]*|[^,]+){2})(?:,|$)
其中
2
是threshold - 1
RegEx Demo1
RegEx Demo2
输出:
当
threshold
是3
时:ABC1,ABCD2,A1
A234B456,C1
当
threshold
是2
时:ABC1,ABCD2
A1,A234B456
C1
码:
int threshold = 3;
String str = "piid1,piid2,piid3,piid4,piid5";
Pattern p = Pattern.compile("((?:[^,]*,[^,]*|[^,]+){" + (threshold-1) + "})(?:,|$)");
Matcher m = p.matcher(str);
while (m.find()) {
System.out.println(m.group(1));
}
输出:
piid1,piid2,piid3
piid4,piid5