Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正则表达式拆分不带空格的数字和字母组_Java_Regex - Fatal编程技术网

Java 正则表达式拆分不带空格的数字和字母组

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 =

如果我有一个类似“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 = "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((?)?