Как число регулярных выражений и сохранить запятую, пробелы и точки в выходной строке? - PullRequest
0 голосов
/ 06 мая 2020

У меня проблема с регулярным выражением, мне нужно извлечь строку из текста и оставить в числе пробелы, запятую и точку (если они есть), например: Lorem impsum, цена: 196 000,2545.20 $ blablabla, Вывод:
196 000,2545.20

Example2: 2530002545.20 £, Вывод:
2530002545.20

Я сделал следующее:

String exampleStr = "Lorem impsum the price is:196 000,2545.20 $ blablabla"
String result = exampleStr.replaceAll("[^\\d.,]", " ")
                          .replaceAll(/\s*$/,'')

Во-первых, замените все, что не является пробелом, запятой, точкой или пробелом (чтобы сохранить его в числе), во-вторых, удалите пробелы в конце строки. Это решение работает, НО я хочу переделать его более правильным образом, чтобы оставить это пустое пространство внутри и удалить другие с начала и конца «цены». Ps: Я действительно не понимаю, как объединить эти два регулярных выражения, с нетерпением жду ваших ответов. Мир!

Ответы [ 2 ]

2 голосов
/ 07 мая 2020

Это простое регулярное выражение \d([\d., ]*\d)? напрямую игнорирует начальный и конечный текст и пробелы и сохраняет точки, запятые и пробелы между цифрами.

Строка Java для этого RegExp равна "\\d([\\d., ]*\\d)?" .

С уважением.

1 голос
/ 06 мая 2020

Поскольку вам нужно извлечь подстроку, соответствующую регулярному выражению, вы можете использовать Matcher. Чтобы избавиться от пробела или в конце, просто обрежьте соответствующую подстроку. Попробуйте это:

        String exampleStr = "Lorem impsum the price is:196 000,2545.20 $ blablabla2:2530002545.20 £";
        Pattern pattern = Pattern.compile("\\d[\\s\\d.,]+");
        Matcher matcher = pattern.matcher(exampleStr);
        while (matcher.find()) {
            System.out.println("'" + matcher.group().trim() + "'");
        }

Вывод:

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