Java拆分正则表达式模式字母和数字
我想将这个regexp模式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", "-"
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
}
}