сопоставление с образцом в Java с использованием регулярного выражения - PullRequest
0 голосов
/ 16 ноября 2010

Я ищу шаблон, соответствующий этому "LA5@10.232.140.133@Po6" и еще одному "LA5@10.232.140.133@Port-channel7" выражению в Java с использованием регулярного выражения.

Как у нас есть \ d {1,3}. \ D {1,3}. \ D {1,3}. \ D {1,3} для проверки IP-адреса.

Можем ли мы получить шаблон, как показано ниже?Пожалуйста, предложите -

[a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9]@\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}@Po\d[1-9]
[a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9]@\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}@Port-channel\d[1-9]

Заранее спасибо.

=============================

В моей программе у меня есть

import java.util.regex.*;
class ptternmatch {
    public static void main(String [] args) {
        Pattern p = Pattern.compile("\\w\\w\\w@\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}@*");
        Matcher m = p.matcher("LA5@10.232.140.133@Port-channel7");
        boolean b = false;
        System.out.println("Pattern is " + m.pattern());
        while(b = m.find()) {
            System.out.println(m.start() + " " + m.group());
    }
    }
}

Но я получаю ошибку компиляции с шаблоном .--> Неверная escape-последовательность Последовательность будет похожа на -> a 3символьное слово цифра n буква @ ipaddress @ некоторый текст ..

Ответы [ 2 ]

1 голос
/ 16 ноября 2010

Что ж, если вы хотите проверить IP-адрес, вам нужно нечто более сложное, чем \d{1,3}.Кроме того, имейте в виду, что для строковых литералов Java вам нужно экранировать \ с помощью \\, чтобы в результате вы получили одну обратную косую черту в фактическом регулярном выражении, чтобы избежать символа, такого как точка (.).1005 *

Предполагая, что бит LA5@ является статическим и что у вас все в порядке с Po или Port-channel, за которым следует цифра в конце, тогда вам, вероятно, понадобится регулярное выражение в следующих строках:

LA5@(((2((5[0-5])|([0-4][0-9])))|(1[0-9]{2})|([1-9][0-9]?)\\.){3}(2(5[0-5]|[0-4][0-9]))|(1[0-9]{2})|([1-9][0-9]?)@Po(rt-channel)?[1-9]

(Брекет может быть шатким, мои извинения)

0 голосов
/ 16 ноября 2010

Вы можете сделать что-то вроде matcher.find() и, если это правда, группы для сбора информации.Посмотрите учебное пособие здесь:

Вам необходимо заключить необходимые части в скобки - например, (\d{1,3}).Если вы оберните все 4, у вас будет 4 группы для доступа.

Кроме того, взгляните на этот урок

Этоочень хороший учебник, я думаю, что он объяснит большинство ваших вопросов.

Чтобы соответствовать второй из ваших строк:

  • LA5 @ 10.232.140.133 @ Port-channel7

Вы можете использовать что-то вроде:

\w{2}\d@\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}@[a-zA-Z\-]+\d

Это зависит от того, что вы хотите сделать, поэтому регулярное выражение может измениться.

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