打印正则表达式的最后一个匹配项

f5emj3cl  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(377)

我有这个密码:

String responseData = "http://xxxxx-f.frehd.net/i/world/open/20150426/1370235-005A/EPISOD-1370235-005A-016f1729028090bf_,892,144,252,360,540,1584,2700,.mp4.csmil/.m3u8";
"http://xxxxx-f.frehd.net/i/world/open/20150426/1370235-005A/EPISOD-1370235-005A-016f1729028090bf_,892,144,252,360,540,1584,2700,.mp4.csmil/.m3u8";

String pattern = ^(https://.*\.54325)$;

Pattern pr = Pattern.compile(pattern);  

            Matcher math = pr.matcher(responseData);

            if (math.find()) {

            // print the url 

            }
            else {
                System.out.println("No Math");
            }

我想打印出最后一个以http开头,以.m3u8结尾的字符串。我该怎么做?我卡住了。感谢所有的帮助。
我现在的问题是,当我找到一个数学和什么打印出来的字符串,我从responsedata得到一切。

ctehm74n

ctehm74n1#

如果您需要在末尾获得一些前面有类似子字符串的子字符串,您需要确保regex引擎在您所需的匹配之前已经使用了尽可能多的字符。
而且,你有一个 ^ 按照你的模式那意味着 beginning of a string . 因此,它从一开始就开始匹配。
你只需花点时间就能达到你想要的 lastIndexOf 以及 substring :

System.out.println(str.substring(str.lastIndexOf("http://")));

或者,如果你需要正则表达式,你需要使用

String pattern = ".*(http://.*?\\.m3u8)$";

使用 math.group(1) 打印值。
示例代码:

import java.util.regex.*;
public class HelloWorld{

     public static void main(String []args){

        String str = "http://xxxxx-f.akamaihd.net/i/world/open/20150426/1370235-005A/EPISOD-1370235-005A-016f1729028090bf_,892,144,252,360,540,1584,2700,.mp4.csmil/index_0_av.m3u8" +
"EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2795000,RESOLUTION=1280x720,CODECS=avc1.64001f, mp4a.40.2" +
"http://xxxxx-f.akamaihd.net/i/world/open/20150426/1370235-005A/EPISOD-1370235-005A-016f1729028090bf_,892,144,252,360,540,1584,2700,.mp4.csmil/index_6_av.m3u8";
        String rx = ".*(http://.*?\\.m3u8)$";
        Pattern ptrn = Pattern.compile(rx);
        Matcher m = ptrn.matcher(str);
        while (m.find()) {
            System.out.println(m.group(1));
        }
     }
}

输出:

http://xxxxx-f.akamaihd.net/i/world/open/20150426/1370235-005A/EPISOD-1370235-005A-016f1729028090bf_,892,144,252,360,540,1584,2700,.mp4.csmil/index_6_av.m3u8

同样在regexplanet上测试

相关问题