[英]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.