Регулярные выражения: найти шаблон в строке - PullRequest
2 голосов
/ 28 апреля 2019

Кто-нибудь может объяснить, как использовать регулярные выражения в Java. У меня есть несколько строк 3 :- N, ‘V—g'ufi “ ‘L Total: 13-70 "0- 1‘ i и r _._A_ ,,1 Total: $13.70 i- T«. Мне нужно извлечь Total: с суммой после нее: Ex ожидаемого результата Total: 13-70, Total: $13.70. Я пытался использовать следующий код ... Но, как я понимаю, он не будет ловить символы, такие как $.-

Pattern p = Pattern.compile("Total: \\d+");
            Matcher m = p.matcher(result);
            while (m.find()) {
                System.out.println(m.group());
            }

1 Ответ

4 голосов
/ 28 апреля 2019

Вы можете использовать

Total:\s*\$?\d+(?:[-.]\d+)?

См. Демоверсию regex .

Детали

  • Total: - буквальная подстрока
  • \s* - 0+ пробелов
  • \$? - необязательный $ символ
  • \d+ - 1+ цифр
  • (?:[-.]\d+)? - необязательная группа без захвата, соответствующая 1 или 0 вхождениям:
    • [-.] - либо -, либо .
    • \d+ - 1 или более цифр.

enter image description here

В Java:

Pattern p = Pattern.compile("Total:\\s*\\$?\\d+(?:[-.]\\d+)?");

Если вам нужно извлечь значение, используйте группу захвата вокруг шаблона, который вам нужно извлечь (например, \$?\d+(?:[-.]\d+)?), и получите доступ к значению группы, например

Pattern p = Pattern.compile("Total:\\s*(\\$?\\d+(?:[-.]\\d+)?)");
Matcher m = p.matcher(result);
while (m.find()) {
     System.out.println(m.group(1));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...