Вы можете использовать функцию отсортированную из Nspl :
use function \nspl\a\sorted;
use function \nspl\op\propertyGetter;
use function \nspl\op\methodCaller;
// Sort by property value
$sortedByCount = sorted($objects, propertyGetter('count'));
// Or sort by result of method call
$sortedByName = sorted($objects, methodCaller('getName'));
попробуйте это:
import re
s='valoirfinalieMONT:23maning '
print(re.findall('(mont)\D*(\d*)', s, re.IGNORECASE))
регулярное выражение будет захватывать 'mont' любое количество нецифровых (\ D) символов, а затем любое количество цифр (\ d)
игнорирование добавлен регистр, поэтому mont, MONT и MoNt, и такие тоже будут записаны
Вы также можете попробовать вот так.
blockquote>
re.I
для нечувствительного к регистру соответствия. Вы можете проверить https://docs.python.org/3/library/re.html для получения более подробной информации.import re s = "valoirfinalieMONT:23maning" s2 = "montdj34meaing" s3 = "thisisthelastmontitwillwork98help" m = re.match(r".*(?P<name>mont)\D+(?P<number>\d+).*", s, re.I) print(m.group(1)) # MONT print(m.group(2)) # 23 # Same as above (2nd way) print(m.group('name')); print(m.group('number')) m2 = re.match(r".*(?P<name>mont)\D+(?P<number>\d+).*", s2, re.I) print(m2.group(1)) # mont print(m2.group(2)) # 34 m3 = re.match(r".*(?P<name>mont)\D+(?P<number>\d+).*", s3, re.I) print(m3.group(1)) # mont print(m3.group(2)) # 98
Вот решение вашего вопроса, которое вы упомянули в комментарии.
>>> import re >>> >>> s = 'valoir13-10-2012finalie13/10/2012MONT:23,00maning'; >>> m = re.match(r".*(\d{2}-\d{2}-\d{4}).*(\d{2}/\d{2}/\d{4}).*(MONT).*(\d{2},\ d{2})", s, re.I) >>> m <_sre.SRE_Match object; span=(0, 43), match='valoir13-10-2012finalie13/10/2012M ONT:23,00'> >>> >>> m.group(0) 'valoir13-10-2012finalie13/10/2012MONT:23,00' >>> >>> d = m.group(1) >>> d '13-10-2012' >>> arr = d.split("-") >>> arr ['13', '10', '2012'] >>> >>> '-'.join(arr[:2] + [arr[2][-2:]]) '13-10-12' >>> >>> ans1 = '-'.join(arr[:2] + [arr[2][-2:]]) >>> ans1 '13-10-12' >>> >>> ans2 = m.group(2) >>> ans2 '13/10/2012' >>> >>> ans3 = m.group(3) >>> ans3 'MONT' >>> >>> ans4 = m.group(4) >>> ans4 '23,00' >>> >>> output = ' '.join([ans1, ans2, ans3, ans4]) >>> output '13-10-12 13/10/2012 MONT 23,00' >>>