我想使用Java Regex获取字符串的前两位数字。我不想使用子字符串。例如:如果我的字符串有“12345”,我想使用正则表达式将子串“12”。
答案 0 :(得分:2)
您可以使用此正则表达式
^\d{2}
^
标志着字符串的开头
\d
匹配一位数
{2}
是一个量词,它可以匹配前面的模式2次
string digits="";
Matcher m=Pattern.compile("^\d{2}").matcher();
if(m.find())digits=m.group();
答案 1 :(得分:2)
最好在这里使用substring()
System.out.println("12345".substring(0,2)); // 12
如果需要验证复杂输入,正则表达式通常是有意义的。否则所有额外的模式编译都是不必要的开销。如果您确实想确认您的字符串实际上是一个数字并返回前两位数字,您仍然可以使用基本API。
String input = "12345";
try {
Integer.parseInt(input);
System.out.println(input.substring(0,2)); // 12
catch (NumberFormatException e) {
System.out.println("Invalid input: " + input);
}
答案 2 :(得分:0)
你也可以试试这个正则表达式:
(?:\D+?)(\d{2})
答案 3 :(得分:0)
正则表达式这样的前两位数? ^(\d{2})
或使用像.*?(\d).*?(\d).*
这样的字符串,如果字符串不仅像c3hk45那样数字,那么你可以从$ 1和$ 2获得那2位数,那么你将获得34