2015-10-23 3 views
1

Мне нужно совместить только те числа, которые начинаются с 5 и имеют ровно 4 цифры в длину.Регулярное выражение: совпадение с фиксированной длиной

Это моя регулярное выражение схема:

m = re.findall(r'^5\d{3}', num) 

Input: ["5560", "55110"] 

Desired Output: 5560 

Что я получаю: 5560, 5511

Так, 5511 не должен быть частью вывода, как это только подстрока 55110 а не целое число само по себе.

+7

Использование заканчивается анкер '$' в конце регулярного выражения. 'm = re.findall (r '^ 5 \ d {3} $', num)' – Tushar

+0

woah спасибо Тушару! Это было быстро! – 90abyss

+0

Если ваш ввод похож на ваш пример, возможно, простое сравнение 'int' будет:' 5000 <= int (item) <6000'. В противном случае используйте RegEx, как указано. – MervS

ответ

1

Вы должны использовать следующее регулярное выражение:

^\s*5\d{3}\s*$ 
+1

\ s * - избыточный. –

+0

Если есть пробел, тогда будет полезно –

+0

Но что, если ему не нужно соответствовать строке, начиная с пробела? Решение данного вопроса должно быть строгим. Затем он может изменить шаблон, если у него есть дополнительные условия. –

1

Предполагая, что вход строка ...

num = '["5560", "55110"]' 
m = re.findall(r'\D5\d{3}\D', num)