Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中匹配${123…456}并提取2个数字?_Java_Regex - Fatal编程技术网

在Java中匹配${123…456}并提取2个数字?

在Java中匹配${123…456}并提取2个数字?,java,regex,Java,Regex,当我知道一个字符串的格式总是${INT1…INT2}时,从一个字符串中得到2个整数的最简单简洁的方法是什么?例如,“Hello${123…456}将提取123456?我会使用带有组和反向引用的模式 final String string = "${123...456}"; final String firstPart = string.substring(string.indexOf("${") + "${".length(), string.indexOf("...")); final Str

当我知道一个字符串的格式总是
${INT1…INT2}
时,从一个字符串中得到2个整数的最简单简洁的方法是什么?例如,“Hello
${123…456}
将提取
123456

我会使用带有组和反向引用的
模式

final String string = "${123...456}";
final String firstPart = string.substring(string.indexOf("${") + "${".length(), string.indexOf("..."));
final String secondPart = string.substring(string.indexOf("...") + "...".length(), string.indexOf("}"));
final Integer integer = Integer.valueOf(firstPart.concat(secondPart));
下面是一个例子:

String input = "Hello ${123...456}, bye ${789...101112}";
//                           | escaped "$"
//                           |  | escaped "{"
//                           |  |  | first group (any number of digits)
//                           |  |  |    | 3 escaped dots
//                           |  |  |    |       | second group (same as 1st)
//                           |  |  |    |       |    | escaped "}"
Pattern p = Pattern.compile("\\$\\{(\\d+)\\.{3}(\\d+)\\}");
Matcher m = p.matcher(input);
// iterating over matcher's find for multiple matches
while (m.find()) {
    System.out.println("Found...");
    System.out.println("\t" + m.group(1));
    System.out.println("\t" + m.group(2));
}
输出

Found...
    123
    456
Found...
    789
    101112

点是任意字符的占位符吗?您的整数总是三位数吗?首先将其拆分为三个点,得到一个字符串数组,例如t.num1=t[0]。拆分(${)[1],num2=t[1]。子字符串(0,t[1]。长度()-1)