В регулярном выражении Java, как разделить на точки, но исключая, если он содержит обратную косую черту - PullRequest
0 голосов
/ 22 сентября 2019

В Java у меня есть строка, содержащая точку, и я хочу разделить строку на точку, но как исключить, если она содержит обратную косую черту.

public class test {
    public static void main(String[] args) {
        String s1 ="test.env.PM1/.0";
        System.out.println(Arrays.asList(s1.split("[.]")));//[test, env, PM1/, 0]

    }
}

Ожидается вывод:

[test, env, PM1/.0]

Итак, как можно исключить расщепление, если есть точка, за которой следует обратный слеш.

1 Ответ

2 голосов
/ 22 сентября 2019

Вы захотите использовать отрицательное косвенное утверждение, чтобы убедиться, что у него нет предшествующей косой черты.

String s1 ="test.env.PM1/.0";
System.out.println(Arrays.asList(s1.split("(?<!/)\\.")));
// [test, env, PM1/.0]

Попробуйте онлайн здесь

Для более подробного объяснения см. регулярные-выражения.инфо (выделено мое)

Взгляд вперед и взгляд назад, все вместе называемые "взглядом", равны нулю-последовательности точно так же, как начало и конец строки, а также начало и конец якоря слова, описанные ранее в этом руководстве.Разница в том, что lookaround фактически совпадает с символами, но затем отказывается от совпадения, возвращая только результат: совпадение или отсутствие совпадения.Вот почему они называются «утверждениями». Они не потребляют символы в строке , а только утверждают, возможно ли совпадение или нет.Lookaround позволяет вам создавать регулярные выражения, которые невозможно создать без них, или которые стали бы очень длинными без них.... Отрицательный взгляд необходим, если вы хотите сопоставить что-то, а не что-то другое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...