Удалите встроенный модификатор DOTALL (?s)
, чтобы избежать сопоставления символа новой строки с .
, добавьте \s*
после Number
и используйте .*
вместо .*?\n
:
r'Model Number\s*:.*'
См. regex demo
Здесь Model Number
будет соответствовать литеральной подстроке, \s*
будет соответствовать 0+ пробелов, :
будет соответствовать двоеточию, а .*
будет соответствовать 0или больше символов кроме символов разрыва строки .
Демо Python :
import re
s = """Model Number : 123
Serial Number : 456"""
model_number = re.findall(r'Model Number\s*:.*',s)
print(model_number) # => ['Model Number : 123']
Если вам нужно извлечь только число, используйте
r'Model Number\s*:\s*(\d+)'
См. еще одну демонстрацию регулярных выражений и эту демонстрацию Python .
Здесь (\d+)
захватит 1 или более цифр и re.findall
только вернуть эти цифры.Или используйте его с re.search
, и как только объект данных совпадения будет получен, возьмите его с помощью match.group(1)
.
ПРИМЕЧАНИЕ : если строка появляется в начале строки, используйтеre.match
.Или добавьте ^
в начале шаблона и используйте флаг re.M
(или добавьте (?m)
в начале шаблона).