Python . Регулярное выражение при указании начала и конца строки не работает
import re
strng="abcABC123"
def lowercase_count(strng):
print(re.findall('^[a-z]$', strng))
почему если здесь поставить Начало строки ^ и конец $ он ничего не находит? А если их убрать оно как надо находит строчные буквы
задача — подсчитать общее количество строчных букв в строке. Я потом это в len() оберну, не проблема, просто не понятно.То есть '^[a-z]$' означает всего одну букву ? А если хочу искать из огромной строки строчные буквы почему нельзя ^ и $?
Ответы (2 шт):
В ^[a-z]$:
^- означает начало строки$- означает конец строки[a-z]- означает поиск одного символа из диапазонаа-z
Если хотите искать последовательности букв английского алфавита, которые могут находиться в любом месте строки, то:
[a-z]+
PS.
Для поиска букв в верхнем регистре используйте еще A-Z: [a-zA-Z]+. Либо в findall передавайте флаг re.I или re.IGNORECASE
strng="abcABC123"
______^_________$ - определение в строке положения метасимволов начала и конца строки
Перевести регулярное выражение в читаемый вид:
^[a-z]$
^________ - начало строки
_^^^^^___ - буква латинского языка в нижнем регистре
______^__ - конец строки
Под выражение попадет только одна буква находящаяся в строке, так как границы имею четкую привязанность.
string="a"
_______^_$
Для примера указать только символ начала строки в выражении ^[a-z] то регулярное выражение найдет из обоих примеров string только первую a
strng="abcABC123"
______^__________ - начало строки
_______^_________ - [a-z]
Так как нет ограничения что далее идет конец строки, то будет выбрана только первая буква в нижнем регистре находящаяся в начале строки.
[a-z] без указания границ строки в сочетании с findall(своеобразный аналог глобального поиска) осуществляет поиск всех одиночных символов латинского алфавита в нижнем регистре:
strng="abcABC123"
_______^_________ - 1 совпадение
________^________ - 2 совпадение
_________^_______ - 3 совпадение
__________^^^^^^_ - так же проверяются, но данные под захват не подходят.
Поиск одиночных выполняется по порядку слева на право и захватывает символы подходящие под шаблон из любого места