Скажите, что у меня есть следующие выражения: 4a1.602.9015zetjre735pA
.
Я хочу сопоставить все, что находится перед самой длинной последовательностью строчных букв (то есть 4a1.602.9015
).
При некотором поиске я нашел это регулярное выражение: re.search(r'.+?(?=[a-z]{2,})', expression)
.
За исключением того, что в общей ситуации самая длинная последовательность строчных букв не имеет фиксированной длины (это может быть 2, 3,или больше букв).Это означает, что возможно иметь такие выражения: 4afj1.602.9015zmpetjre735pA
.И в этом случае мое регулярное выражение не будет работать (используя мое регулярное выражение с предыдущим выражением, результат будет просто 4
).
Я нашел другое решение: match = max(re.findall(r'[a-z]+', expression), key=len)
затем возьмите ту часть выражения, которая перед ним (f_match = expresion[:expression.index(match)]
).Но это не чистое регулярное выражение.
Есть ли какое-нибудь чистое регулярное выражение?