Regex: полное совпадение плавающих чисел с не-* git символами - PullRequest
0 голосов
/ 14 марта 2020

Мне было интересно, как можно получить полное совпадение положительных и отрицательных чисел в данном наборе данных, который также имеет не-ди git символы. У меня есть куча валютных операций, и я хотел бы указать только значение цифры c.

С помощью следующего регулярного выражения я получаю все числа правильно, но не могу найти способ получить "-" подписать.

Есть идеи почему?

(\d+)(,(\d{3}))*((?=[,.-](\|$))|(\.\d+))

Набор данных:

null
null
($7.08 CAD)
(-$1.06 CAD)
(€50.03 EUR)
($1,024.38 CAD)
(-$1,024,309.06 CAD)
(€50.03 EUR)

Требуемый вывод:

7.08
-1.06
50.03
1,024.38
-1,024,309.06
50.03

Пример регулярного выражения https://regex101.com/r/Nw8EdE/2

1 Ответ

2 голосов
/ 14 марта 2020

Одним из вариантов является использование 2 групп захвата для необязательного - и части цифр и совпадение с необязательным знаком евро или доллара между [$€]?

Затем можно объединить первый и второй захват группа в результате.

(-?)[$€]?(\d+(?:[,.]\d+)*)

Пояснение

  • (-?) Захват группа 1 , соответствие необязательно -
  • [$€]? По выбору соответствует 1 из перечисленных символов
  • ( Захват группа 2
    • \d+ Соответствие 1+ цифр
    • (?:[,.]\d+)* Повторите 0+ раз, используя , или ., а затем 1+ цифр
  • ) Закрыть группу

Regex demo

...