Java 正则表达式拆分不带空格的数字和字母组
如果我有一个类似“11E12C108N”的字符串,它是字母组和数字组的串联,那么如何在没有分隔符空格字符的情况下拆分它们 例如,我希望结果分割为:Java 正则表达式拆分不带空格的数字和字母组,java,regex,Java,Regex,如果我有一个类似“11E12C108N”的字符串,它是字母组和数字组的串联,那么如何在没有分隔符空格字符的情况下拆分它们 例如,我希望结果分割为: tokens[0] = "11" tokens[1] = "E" tokens[2] = "12" tokens[3] = "C" tokens[4] = "108" tokens[5] = "N" 我现在有这个 public static void main(String[] args) { String stringToSplit =
tokens[0] = "11"
tokens[1] = "E"
tokens[2] = "12"
tokens[3] = "C"
tokens[4] = "108"
tokens[5] = "N"
我现在有这个
public static void main(String[] args) {
String stringToSplit = "11E12C108N";
Pattern pattern = Pattern.compile("\\d+\\D+");
Matcher matcher = pattern.matcher(stringToSplit);
while (matcher.find()) {
System.out.println(matcher.group());
}
}
这给了我:
11E
12C
108N
我可以让原始正则表达式一次性完成完整拆分吗?不必在中间令牌上再次运行正则表达式?使用以下正则表达式,并获取所有匹配项的列表。这就是你要找的
\d+|\D+
在Java中,我认为代码应该是这样的:
Matcher matcher = Pattern.compile("\\d+|\\D+").matcher(theString);
while (matcher.find())
{
// append matcher.group() to your list
}
您还可以在splitregex中使用“look around”
String stringToSplit = "11E12C108N";
String[] tokens = stringToSplit .split("(?<=\\d)(?=\\D)|(?=\\d)(?<=\\D)");
System.out.println(Arrays.toString(tokens));
stringToSplit=“11E12C108N”;
String[]标记=stringToSplit.split((?)?