-2

我想使用 Java Regex 获取字符串的前两位数字。我不想使用子字符串。例如:如果我的字符串有“12345”,我想使用正则表达式将“12”作为子字符串。

4

4 回答 4

2

你可以使用这个正则表达式

^\d{2}

^标记字符串的开始

\d匹配单个数字

{2}是一个量词,它将匹配前面的模式 2 次


string digits="";
Matcher m=Pattern.compile("^\d{2}").matcher();
if(m.find())digits=m.group();
于 2013-07-02T05:29:04.270 回答
2

substring()在这里更好用

System.out.println("12345".substring(0,2)); // 12

如果您需要验证复杂的输入,Regex 通常是有意义的。否则,所有额外的模式编译内容都是不必要的开销。如果您确实想验证您的字符串实际上是一个数字并返回前两位数字,您仍然可以使用基本 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);
}
于 2013-07-02T05:30:57.990 回答
0

你也可以试试这个正则表达式:

(?:\D+?)(\d{2})
于 2013-07-02T05:43:33.210 回答
0

像这样的前两位数的正则表达式?^(\d{2})

或者使用类似的东西,.*?(\d).*?(\d).*如果字符串不仅是像 c3hk45 这样的数字,那么你可以从 $1 和 $2 中得到这 2 个数字,那么你将得到 34

于 2013-07-02T07:18:58.967 回答