我想将此正则表达式模式2 numbers-3 numbers-5 numbers and letter
拆分为两部分。数字和“ - ”一个数组和第二个数组中的字母。
我一直想弄清楚。希望我能得到一些帮助。
这是一个例子
"12-123-12345A" <----- the string
// I want to split it such that it can be ["12-123-12345","A"]
我试过这个
"\\d{2}-\\d{3}-\\d{5}"
// that only give me ["", "A"]
和这个
"(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)"
// ["12", "-", "123", "-", "12345", "A"]
答案 0 :(得分:4)
\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
答案 1 :(得分:1)
试试这个
String[] a = "12-123-12345A".split("(?<=\\d)(?=\\p{Alpha})");
答案 2 :(得分:0)
(适用\ d {2} - \ d {3} - \ d {5})(\ w)的强>
您可以在本网站上进行测试
这是java代码。注意用斜杠代替斜杠\ - &gt; \\
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
}
}