Java拆分正则表达式模式字母和数字

Java拆分正则表达式模式字母和数字,java,regex,Java,Regex,我想将这个regexp模式2个数字-3个数字-5个数字和字母分成两部分。一个数组中的数字和“-”以及第二个数组中的字母 我一直在想办法。希望我能得到一些帮助 这里有一个例子 "12-123-12345A" <----- the string // I want to split it such that it can be ["12-123-12345","A"] 还有这个 "(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)" // ["12", "-"

我想将这个regexp模式
2个数字-3个数字-5个数字和字母
分成两部分。一个数组中的数字和“-”以及第二个数组中的字母

我一直在想办法。希望我能得到一些帮助

这里有一个例子

"12-123-12345A"    <----- the string 
// I want to split it such that it can be ["12-123-12345","A"]
还有这个

"(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)"
// ["12", "-", "123", "-", "12345", "A"]

”(?
\D
匹配任何非数字字符(包括
-
)。您最好使用
[^-\D]
来排除
-

String s = "12-123-12345A";
String parts[] = s.split("(?<=\\d)(?=[^-\\d])");
System.out.println(parts[0]); // 12-123-12345
System.out.println(parts[1]); // A
String s=“12-123-12345A”;
字符串部分[]=s.split((?试试这个

String[] a = "12-123-12345A".split("(?<=\\d)(?=\\p{Alpha})");
String[]a=“12-123-12345A”。拆分((?)(\d{2}-\d{3}-\d{5})(\w)

你可以在这个网站上测试它

以下是java代码。请注意,双斜杠代替斜杠\-->\\


我最初得到了一个匹配的“^\d{2}-\d{3}-\d{5}”,但我想在java中它是不同的???@AirWick219猜测在java中你需要将单斜杠变成双斜杠。我在上面添加了代码,效果非常好,但我想知道我是否可以限制格式?所以
“12-123-123A“
不会进行拆分,只返回一个空数组。@AirWick219,它看起来像是
匹配器。查找
更适合您。请看:匹配器会很好,但拆分也会导致
“12-123-12345”
没有字母在这种情况下,我希望它只返回[“12-123-12345”]非常感谢你…学到了很多…所以我猜“?”的意思是可选的。如果结尾字母不是一个,而是可以加上…
“12-123-12345A”
“12-123-12345AA”
“12-123-12345aaaa”
。比如拆分字母和“-”作为组(1)和所有字母作为组(2)@AirWick219,是的。它与前面部分的零或一个匹配=>可选
String[] a = "12-123-12345A".split("(?<=\\d)(?=\\p{Alpha})");
package com.company;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

// http://stackoverflow.com/questions/22061614
public class Main {

    public static void main(String[] args) {
      Pattern regex = Pattern.compile("(\\d{2}-\\d{3}-\\d{5})(\\w)");
      Matcher matcher = regex.matcher("12-123-12345A");
      matcher.find();
      System.out.println(matcher.group(1));
      System.out.println(matcher.group(2));
    // write your code here
    }
}