Java регулярное выражение пропустить некоторые символы соответствуют только одному вхождению цифры с периодическими периодами - PullRequest
0 голосов
/ 26 ноября 2018

Мои данные выглядят так:

0.1.2
[2.2.0, 2.2.1, 2.2.2, 2.2.3]

Я хотел бы написать тест, который может идентифицировать последнюю цифру в первой строке, т. Е. 2, и впоследствии использовать ее для сопоставления со второйцифра каждого значения во второй строке.

Таким образом, с первой строки он получит 2, а затем во второй строке - 2.

Я пытался написать некоторое регулярное выражение для этой задачи, используя этот сайт , я пытался что-то вроде [^\d\.\d\.]\d ... но безрезультатно.

Кто-нибудь знает, как я мог бы использовать регулярное выражение для извлечения 2 из строки 0.1.2, чтобы извлечь среднюю цифру из таких строк, как 2.2.0 и 2.2.1?

1 Ответ

0 голосов
/ 26 ноября 2018

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

String s = "0.1.2\n" +
        "[2.2.0, 2.2.1, 2.2.2, 2.2.3]";
Matcher m = Pattern.compile("\\d\\.\\d\\.(\\d)\n(.+)").matcher(s);
if (m.find()) {
    int lastDigit = Integer.parseInt(m.group(1)); // find the last digit on first line
    String secondLine = m.group(2);

    // now find triplets on the second line
    m = Pattern.compile("(\\d)\\.(\\d)\\.(\\d)").matcher(secondLine);
    while (m.find()) {

        // here I printed the digits out. You can do whatever you like with "m.group(lastDigit)"
        System.out.println(m.group(lastDigit));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...