我正在尝试提取“/”和“.”之间的字符串的一个网址。例如,我有一个像“some.com/part1/part2/part3/stringINeed.xyz”这样的 URL。我需要从上面的 URL 中提取“stringINeed”,即最后一个“/”和“.”之间的那个。没有其他的。
到目前为止,我尝试了以下操作,但输出为空:
import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
class Extract
{
public static void main (String[] args) throws java.lang.Exception
{
String str = "part1/part2/part3/stringINeed.xyz" ;
Pattern pattern = Pattern.compile("/(.*?).");
Matcher matcher = pattern.matcher(str);
if (matcher.find()) {
System.out.println(matcher.group(1));
}
}
}
我的代码有什么问题。谁能帮忙?
最佳答案
使用这个正则表达式:
[^/.]+(?=\.[^.]+$)
参见 demo .
在 Java 中:
Pattern regex = Pattern.compile("[^/.]+(?=\\.[^.]+$)");
Matcher regexMatcher = regex.matcher(subjectString);
if (regexMatcher.find()) {
ResultString = regexMatcher.group();
}
解释
[^/.]+
匹配任何不是斜杠或点的字符- 先行
(?=\.[^.]+)
断言后面是一个点,后跟非点和字符串的结尾
关于java - 从 URL 中提取部分字符串 - Java Regex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24541500/