Java String плюется с помощью регулярного выражения с одиночной косой чертой, за которой не следует косая черта - PullRequest
0 голосов
/ 25 июня 2018

Я хочу разделить 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 голосов
/ 25 июня 2018

В качестве дополнительного ответа,

вы можете использовать это выражение ((?: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 = "/9904667/java-string-plyetsya-pomoschy-regulyarnogo-vyrazheniya-odinochnoi-kosoi-chertoi-za-kotoroi-ne-sleduet-kosaya-cherta";
        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
0 голосов
/ 25 июня 2018

Вам нужна комбинация негативного взгляда сзади (то есть «не предшествует») и негативного взгляда (то есть «не сопровождается»). Таким образом, вы будете разделять на любые /, которым не предшествует / и за которыми не следует /.

Согласно Javadoc для Pattern -

  • отрицательный взгляд позади ограничен (?<! и )
  • отрицательный прогноз ограничен (?! и )

Итак, вам нужно регулярное выражение (?<!/)/(?!/)

...