Как извлечь только целую часть строки с помощью регулярных выражений - PullRequest
0 голосов
/ 05 февраля 2020

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

[-\d][^.]

[-\d] -> оно находит все целые, даже отрицательные [^.] -> Я думаю, что это останавливается на ., но не удалось Это одна часть после точки. 3.14 -> 14 Он должен только извлечь 3

Мои тесты

Input -> Expected Output
3.14  -> 3
      -42  -> -42
-789word -> -789
789word -> 789
789.89word -> 789
-789.89word -> -789

РЕДАКТИРОВАТЬ Мой тестовый случай всегда начинается с любого из этих трех случаев. 1. пустое пространство 2. ди git 3. отрицательный знак Как я могу улучшить свой шаблон регулярных выражений?

Ответы [ 3 ]

2 голосов
/ 05 февраля 2020

Это может быть так просто, как

^\s*-?\d+

См. демонстрацию на regex101.com .

0 голосов
/ 05 февраля 2020
import re
dd = "-3.14afr" 
re.findall(r'-?\d+', dd)[0]
## the output is 
-3
0 голосов
/ 05 февраля 2020

Вы можете использовать re.search() с простым шаблоном "-?\d+":

import re

strings = ("3.14", "      -42", "-789word", "789word", "789.89word", "-789.89word")
for s in strings:
    match = re.search("-?\d+", s)
    print(f"{s} => {match.group()}")

Цитата из документов:

Сканирование через строку ищет первое место, где регулярное выражение pattern производит совпадение.

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