例如: 我有一个像这样的字符串: http://shop.vipshop.com/detail-97996-12358781.html
我想使用正则表达式找到97996和12358781 java代码表示赞赏 非常感谢。
String str="http://shop.vipshop.com/detail-97996-12358781.html";
String regex ="\-d{5}\-";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
System.out.println(matcher.group());
但是错了
答案 0 :(得分:1)
试试这个
String str="http://shop.vipshop.com/detail-97996-12358781.html";
String regex =".*detail-(\\d+)-(\\d+).html";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
if(matcher.matches()){
System.out.println(matcher.group(1) + "|" + matcher.group(2));
}
答案 1 :(得分:1)
您必须调用Matcher#find()
或Matcher#matches()
才能真正获得匹配。在这种情况下,您需要前一个,因为您只找到匹配正则表达式的字符串的一部分。
您可以使用+
量词来获取任何长度的数字。试试这个:
String regex ="\\d+";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
System.out.println(matcher.group());
}
答案 2 :(得分:1)
两行:
String num1 = str.replaceAll(".*-(\\d+)-.*", "$1");
String num2 = str.replaceAll(".*-(\\d+)\\..*", "$1");
答案 3 :(得分:1)
String str = "http://shop.vipshop.com/detail-97996-12358781.html";
String regex = "(?<=detail-)(\\d+)-(\\d+)(?=\\.html)";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
matcher.find();
System.out.println(matcher.group(1));
System.out.println(matcher.group(2));
输出:
97996
12358781
答案 4 :(得分:0)
您使用了量词(5),但1235 ...仍然是8个字符? 是否总是5和8可以使用:
"([\\d]{5,8})"
捕获到后向引用中的匹配
但是,如果您需要在特定表单中找到详细信息-NUMBER-NUMBER.html,则可以使用:
"detail-([\\d]*)-([\\d]*).html"
[1]和[2]
中捕获的匹配项答案 5 :(得分:0)
你可以用这个:
String str="http://shop.vipshop.com/detail-97996-12358781.html";
String regex ="[^0-9]+([0-9]+)[^0-9]+([0-9]+).+";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
if(matcher.matches()){
System.out.println(matcher.group(1) + " " + matcher.group(2));
}
高级教程请转到此链接
答案 6 :(得分:0)
你应该添加
if(matcher.find()){
}
on
System.out.println(matcher.group());
然后你的代码是:
String str="http://shop.vipshop.com/detail-97996-12358781.html";
String regex ="\\d{5,}";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
if(matcher.find()){
System.out.println(matcher.group());
}