从具有结束和非结束值的字符串中查找数字

时间:2014-01-10 20:30:31

标签: java regex

我有一个这样的字符串:下面两个例子。

?dtg=6&reqp=1&reqr=
?dtg=654&reqp=1&reqr=
?dtg=785

我想在dtg之后获取该号码。

所以在案例1中我想要6而在案例2中我想要654而在案例3中我想要785

4 个答案:

答案 0 :(得分:1)

使用regular expressions(正则表达式):

Pattern pattern = Pattern.compile("[&?]dtg=([0-9]+)");
Matcher matcher = pattern.matcher(inputString);
if(matcher.find()) {
    int dtg = Integer.parseInt( matcher.group(1) );
}

答案 1 :(得分:0)

您可以使用String#repaceFirst

String repl = string.replaceFirst("\\?dtg=(\\d+).*", "$1");

答案 2 :(得分:0)

如果dtg不是第一个url参数,请使用此选项。

dtg=(.*?)(?:&|$)

工作示例:http://regex101.com/r/qM0xV2

答案 3 :(得分:0)

虽然在大多数情况下使用正则表达式会有所帮助,但对我来说,你有URL中的查询字符串示例 - 如果是这种情况,我会将该查询字符串转换为Map<String, List<String>>然后获取dtg密钥的值(将处理此类情况: ?DTG = 6&安培; reqp = 1&安培; DTG = 121212&安培; reqr = )