Inconsistência entre expressões regulares sed e python
Peço desculpas se isso for publicado em algum lugar, mas minha pesquisa superficial não encontrou nada.
Ao fazer alguma programação em Python, notei que o seguinte comando:
re.sub("a*((ab)*)b", r"\1", "aabb")
retorna a string vazia. Mas um comando equivalente no sed:
echo "aabb" | sed "s/a*\(\(ab\)*\)b/\1/"
devolveab
.
Faz sentido para mim que a diretiva "a *" no início do regex python correspondesse aos doisa
's, causando "(ab) *" para coincidir com zero vezes, mas eu não tenho idéia de como sed vem comab
. Alguém sabe qual é a diferença entre os dois mecanismos de regex que causa isso? Acredito que ambos combinam estrelas avidamente por padrão, mas ocorreu-me que o sed pode ser igual à direita e não à esquerda. Qualquer insight seria muito apreciado.