Regex - Соответствие второй точки - PullRequest
0 голосов
/ 19 марта 2019

У меня есть несколько чисел, разделенных одной или без точки, например:

1341.1241,
2.4, 
552 or
1

, если появляется вторая точка, я бы хотел, чтобы это совпадало с регулярным выражением, когда один изследующие условия выполняются:

.2341.1525 (if the dot is the first character [.]2341.1525)

.53453 (also when theres a single dot as the first char in general [.]53453

1235.446.634 (as the second dot in the string 1235.446[.]634)

51524.24. (its also possible that the dot appears as the last character 51524.24[.])

Соответствующая точка будет удалена.Я использую Java.

Возможно ли даже иметь одно регулярное выражение, содержащее эти условия?Если это так, я был бы рад, если бы кто-то мог поделиться своим подходом, поскольку я полностью потерян.

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

1 Ответ

0 голосов
/ 19 марта 2019

Похоже, (\\d*\\.\\d*)\\.(\\d*) делает свою работу.Скобки предназначены для захвата группы, который позволяет удалить точку путем объединения снимков.

Пример кода:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
    static Pattern PATTERN = Pattern.compile("(\\d*\\.\\d*)\\.(\\d*)");

    public static void main(String[] args) {
        System.out.println(removeSecondDot("1341.1241"));
        System.out.println(removeSecondDot("2.4"));
        System.out.println(removeSecondDot("552"));
        System.out.println(removeSecondDot("1"));
        System.out.println(removeSecondDot(".2341.1525"));
        System.out.println(removeSecondDot("1235.446.634"));
        System.out.println(removeSecondDot("51524.24."));
    }

    private static String removeSecondDot(String input) {
        Matcher m = PATTERN.matcher(input);
        if (m.matches()) {
            return m.group(1) + m.group(2);
        }
        return input;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...