繁体   English   中英

如何在 Android Studio 中使用正则表达式从给定的 url 中提取 substring

[英]How can I extract substring from the given url using regex in Android Studio

我正在尝试从 URL https://www.instagram.com/p/CANseIqFMnf/中使用正则表达式从 ZE84E30B9390CDB64ZAB6DB2C 中提取CANseIqFMnf 请帮助我获得符合 Android Studio 的正则表达式。

这是我的方法的代码:

String url = "https://www.instagram.com/p/CANseIqFMnf/";
    String REGEX = "/p\//";
    Pattern pattern = Pattern.compile(REGEX);
    Matcher matcher = pattern.matcher(url);

    boolean match = matcher.matches();

    if (match){
        Log.e("success", "start = " + matcher.start() + " end = " + matcher.end() );
    }else{
        Log.e("failed", "failed");
    }

但它给了我失败的回报!

方法一

您只需要在String中使用replaceAll方法,无需编译模式并使事情复杂化:

String input = "https://www.instagram.com/p/CANseIqFMnf/";
String output = input.replaceAll("https://www.instagram.com/p/", "").replaceAll("/", "");
Log.v(TAG, output);

请注意,第一个replaceAll是删除url而第二个replaceAll是删除任何斜杠/

方法二

Pattern pattern = Pattern.compile("https://www.instagram.com/p/(.*?)/");
Matcher matcher = pattern.matcher("https://www.instagram.com/p/CANseIqFMnf/");
        while(matcher.find()) {
            System.out.println(matcher.group(1));
        }

请注意,如果matcher.find()返回true ,那么如果您在 REGEX (.*?)中使用了这样的修饰符,那么找到的部分将在group(1)中,并且group(0)将保存整个正则表达式匹配在您的情况下是整个 url。

可以使用java.nio.file.Paths API 以更简单的方式实现不带正则表达式的替代选项

public class Url {

    public static void main(String[] args) {
        String url = "https://www.instagram.com/p/CANseIqFMnf/";
        String name = java.nio.file.Paths.get(url).getFileName().toString();
        System.out.println(name);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM