Нужно регулярное выражение Java, чтобы соответствовать строке ниже - PullRequest
0 голосов
/ 01 февраля 2011

Что такое регулярное выражение Java для соответствия шаблону ниже?

<anyString>.<5 or 10>.anyNumber.anyNumber

Здесь 5 и 10. числа.

Ответы [ 3 ]

6 голосов
/ 01 февраля 2011
.*\.(?:5|10)\.\d+\.\d+

должно работать.

Пояснение:

.*        # any number of characters (except newlines)
\.        # literal dot
(?:5|10)  # 5 or 10
\.        # literal dot
\d+       # one or more digits
\.        # literal dot
\d+       # one or more digits

Помните, что если вы используете его в Java, вам необходимо избежать обратной косой черты при построении регулярного выражения:

Pattern regex = Pattern.compile(".*\\.(?:5|10)\\.\\d+\\.\\d+");
0 голосов
/ 01 февраля 2011

Предполагая, что вы имеете в виду пример допустимой строки .5.1.1

Эта форма должна помочь

\.(5|10)\.[0-9]\.[0-9]

или если вторые два числа могут иметь более одного символа, т.е. .10.123.1234

\.(5|10)\.[0-9]*\.[0-9]*

0 голосов
/ 01 февраля 2011

Если я правильно прочитал ваше намерение, это должно сработать:

   Pattern p = Pattern.compile(".*?\\.(?:5|10)\\.(\\d+)\\.(\\d+)");
    Matcher m;

    m = p.matcher(".5.11.10");
    m.matches(); // == true
    m.group(1).equals("11");
    m.group(2).equals("10");


    m = p.matcher("hannib al.10.11.12");
    m.matches(); // == true
    m.group(1).equals("11");
    m.group(2).equals("12");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...