Нужна помощь, чтобы разбить строку в Java с помощью регулярных выражений - PullRequest
4 голосов
/ 25 мая 2011

У меня есть строка типа "portal100common2055".

Я хотел бы разбить ее на две части, где вторая часть должна содержать только цифры.

"portal200511sbet104" станет "portal200511sbet", "104"

Не могли бы вы помочь мне достичь этого?

Ответы [ 2 ]

5 голосов
/ 25 мая 2011

Как это:

    Matcher m = Pattern.compile("^(.*?)(\\d+)$").matcher(args[0]);
    if( m.find() ) {
        String prefix = m.group(1);
        String digits = m.group(2);
        System.out.println("Prefix is \""+prefix+"\"");
        System.out.println("Trailing digits are \""+digits+"\"");
    } else {
        System.out.println("Does not match");
    }
3 голосов
/ 25 мая 2011
String[] parts = input.split("(?<=\\D)(?=\\d+$)");
if (parts.length < 2) throw new IllegalArgumentException("Input does not end with numbers: " + input);
String head = parts[0];
String numericTail = parts[1];

Это более элегантное решение использует взгляд позади и взгляд вперед функции регулярного выражения.

Пояснение:

  • (?<=\\D) означает, что в текущей точке убедитесь, что предыдущие символы оканчиваются не цифрой (не цифра выражается как \D)
  • (?=\\d+$) означает текущую точку, убедитесь, что в конце ввода находятся только цифры (цифра выражается как \d)

Это будет только истинное значение в желаемой точке, которую вы хотите разделить на вход

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