Я использую регулярное выражение для обнаружения чисел от 0 до 999 999 999 внутри строки в Python.
import re
test_string = "b\'[<span id=\"prl\">114 893</span>]\'"
working_pattern = "\d{1,3}\s\d{3}"
non_working_pattern = "\d{1,3}(\s\d{3}){0,2}"
wk_ptrn = re.findall(working_pattern, test_string)
non_wk_ptrn = re.findall(non_working_pattern, test_string)
print(wk_ptrn)
print(non_wk_ptrn)
Результаты:
print(wk_ptrn)
отображает: ['114 893']
print(non_wk_ptrn)
отображает: [' 893']
(с пробелом перед первой цифрой)
Non_working_pattern: "\d{1,3}(\s\d{3}){0,2}"
\d{1,3} :
обнаруживает от 1 до 3 цифр [0до 999]
\s\d{3} :
обнаруживает любой пробел, за которым следуют 3 цифры ["000" до "999"]
{0,2} :
- это квантификатор, поэтому я могу обнаружить "0" (quantifier = 0)
до "999[ 999][ 999]" (quantifier = 2)
.
Я не понимаю, почему "\d{1,3}(\s\d{3}){0,2}
"не работает.
Не могли бы вы помочь мне разобраться в ошибке?
Спасибо. С уважением.