使用正则表达式的Java String吐出,带有单个正斜杠,后不带斜杠

时间:2018-06-25 04:37:24

标签: java regex split

我想用一个正斜杠而不是两个正斜杠来分隔URL。

http://www.eclipse.org/swt/snippets/

我想在URL上方拆分为http://www.eclipse.org,swt,摘要。

代码:

url = http://www.eclipse.org/swt/snippets/;
String[] truncUrl = url.split("/");

请使用正则表达式指导我。

谢谢

2 个答案:

答案 0 :(得分:2)

您要组合使用负向后看(即“不跟随”)和负向前看(即“不跟随”)。因此,您将分割没有/且前面没有/的任何/

根据the Javadoc for Pattern-

  • 后面的否定后视由(?<!)分隔
  • 否定前瞻用(?!)分隔

所以您想要的正则表达式为(?<!/)/(?!/)

答案 1 :(得分:0)

作为附加答案,

您可以使用此表达式((?:http(s)?:\/\/)?[\w.&?=%#+:-]+)

示例:

import java.util.regex.Pattern;
import java.util.regex.Matcher;
import java.util.List;
import java.util.ArrayList;

public class MyClass {
    public static void main(String args[]) {
        String url = "https://stackoverflow.com/questions/51016377/java-string-spit-using-regex-with-single-forward-slash-not-followed-by-a-slash";
        Pattern rgx = Pattern.compile("((?:http(s)?://)?[\\w.&?=%#+:-]+)");
        Matcher m = rgx.matcher(url);

        List<String> list = new ArrayList<>();
        while (m.find())
            list.add(m.group(1));

        list.forEach(System.out::println);
    }
}

输出:

https://stackoverflow.com
questions
51016377
java-string-spit-using-regex-with-single-forward-slash-not-followed-by-a-slash