0

例: 次のような文字列があります: 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());  

しかし、それは間違っていました

4

7 に答える 7

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());
}
于 2013-09-02T09:01:49.697 に答える
1

2 行:

String num1 = str.replaceAll(".*-(\\d+)-.*", "$1");
String num2 = str.replaceAll(".*-(\\d+)\\..*", "$1");
于 2013-09-02T09:27:30.937 に答える
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

于 2013-09-02T13:50:45.347 に答える
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));
}
于 2013-09-02T08:59:57.173 に答える
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));
    }

高度なチュートリアルについては、このリンクにアクセスしてください

正規表現のチュートリアル

および正規表現のチュートリアル

于 2013-09-02T09:14:22.477 に答える
0

数量詞 (5) を使用しましたが、それでも 1235... は 8 文字ですか? 常に 5 と 8 を使用できますか。

"([\\d]{5,8})"

後方参照にキャプチャされた一致

ただし、detail-NUMBER-NUMBER.html という特定のフォームで検索する必要がある場合は、次を使用できます。

"detail-([\\d]*)-([\\d]*).html"

[1] と [2] でキャプチャされた一致

于 2013-09-02T09:05:15.553 に答える
0

追加する必要があります

if(matcher.find()){

}

の上

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());
}
于 2013-09-02T14:34:22.087 に答える