Extract part of a string from a URL - Java Regex

拈花ヽ惹草 提交于 2019-12-10 21:47:08

问题


I'm trying to extract a string between '/' and '.' of a URL. For example, I have a URL like "some.com/part1/part2/part3/stringINeed.xyz". I need to extract "stringINeed" from the above URL, the one between last '/' and the '.' nothing else.

So far, I tried the following and it gives an empty output:

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));
        }
    }
}

What is wrong with my code. Can anyone help?


回答1:


Use this regex:

[^/.]+(?=\.[^.]+$)

See demo.

In Java:

Pattern regex = Pattern.compile("[^/.]+(?=\\.[^.]+$)");
Matcher regexMatcher = regex.matcher(subjectString);
if (regexMatcher.find()) {
    ResultString = regexMatcher.group();
} 

Explanation

  • [^/.]+ matches any chars that are not a slash or a dot
  • The lookahead (?=\.[^.]+) asserts that what follows is a dot followed by non-dots and the end of the string



回答2:


Without regex

str.substring(str.lastIndexOf("/"), str.lastIndexOf(".")).replaceAll("/", "");


来源:https://stackoverflow.com/questions/24541500/extract-part-of-a-string-from-a-url-java-regex

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!