Получить подстроку в соответствии с вхождением, reg exp java

1

Всем добрый день! Интересно, может ли кто-нибудь помочь мне.

У меня есть строка -2.100 CM 1.000 CM 1.025 CM

Проблема заключается в получении значений до CM, например -2.1, 1.0, 1.025

Pattern pattern = Pattern.compile("(\\-*\\d*.\\d*) CM"); would give me -2.1, 

Pattern pattern = Pattern.compile(" (\\-*\\d*.\\d*) CM"); 1.0

Не удается получить третье значение (есть ли способ получить значения в соответствии с их вхождением?

Теги:
string

2 ответа

2
Лучший ответ

Вы можете разделить строку.

String str = "-2.100 CM 1.000 CM 1.025 CM";

String[] array = str.split("\\s+CM\\s*");
for (String s : array) {
    System.out.println(new Double(s));
}

вывод:

-2.1
1.0
1.025

Вы можете попробовать с помощью Pattern также использовать Positive Lookahead.

String str = "-2.100 CM 1.000 CM 1.025 CM";

Pattern p = Pattern.compile("[+-]?\\d+\\.?\\d*(?= CM)", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(str);
while (m.find()) {
    System.out.println(new Double(m.group()));
}

вывод:

-2.1
1.0
1.025
  • 0
    Это регулярное выражение будет соответствовать 1.000 . ОП хочет соответствовать только 1.0 .
  • 0
    Нет, потому что тогда это будет соответствовать только 1.0 для 1.025 . ОП хочет соответствовать 1.025 .
Показать ещё 2 комментария
0

Попробуй это,

String input = "-2.100 CM 1.000 CM 1.025 CM";
String[] result = input.split("\\s*CM\\s*");

Ещё вопросы

Сообщество Overcoder
Наверх
Меню