Вы можете добавить комбинацию цифр в матрицу отрицательного прогнозирования, чтобы запретить возврат, чтобы получить неполное совпадение чисел:
orig\.\s*\d[\d.]*(?!-|\.?\d)
См. Демоверсию regex .
Детали
orig\.
- подстрока orig.
(обратите внимание, что точка должна быть экранирована, чтобы соответствовать буквальной точке)
\s*
- 0+ пробельных символов
\d[\d.]*
- цифра, за которой следуют 0+ цифр или .
символы
(?!-|\.?\d)
- отрицательный прогноз, который не соответствует совпадению, если есть дефис или необязательный .
, сопровождаемый цифрой сразу справа от текущего местоположения.
См. Демоверсию Python :
import re
s = "Orig. 750-52.00 and orig. 3.99"
orig = re.compile(r"orig\.\s*\d[\d.]*(?!-|\.?\d)", re.IGNORECASE)
m = orig.search(s)
if m:
print("Yes: {}".format(m.group()))
# => Yes: orig. 3.99
Также обратите внимание, что нет необходимости повторять операцию поиска orig.search(s)
, вы можете присвоить результат поиска регулярного выражения переменной (см. m
), а затем, после проверки, не является ли объект данных соответствия None
, получить доступ ко всему матчу через m.group()
.