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

Пожалуйста, примите мои извинения, если это глупый вопрос.

Я хочу сделать выражение регулярного выражения, которое может внести два следующих изменения в Python.

  1. $12345.67890 до 12345.67
  2. $12345 до 12345

Каким было бы подходящее выражение регулярного выражения для внесения обоих изменений?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 23 апреля 2020

Мы можем попробовать использовать re.sub здесь:

inp = "Here is a value $12345.67890 for replacement."
out = re.sub(r'\$(\d+(?:\.\d{1,2})?)\d*\b', '\\1', inp)
print(out)

Это печатает:

Here is a value 12345.67 for replacement.

Вот объяснение шаблона регулярного выражения:

\$                  match $
(                   capture what follows
    \d+             match one or more whole number digits
    (?:\.\d{1,2})?  then match an optional decimal component, with up to 2 digits
)                   close capture group (the output number you want)
\d*                 consume any remaining decimal digits, to remove them
\b                  until hitting a word boundary
0 голосов
/ 23 апреля 2020

в стиле блокнота ++ я бы сделал что-то вроде поиска \$(\d+\.)(\d\d)\d+ Заменить \1\2

Надеюсь, это поможет

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