Eu uso regularmente sagetex , que é escrito em python.
Um dos scripts do pacote define uma variável como esta:
ignore = r"^( _st_.goboom|print 'SageT| ?_st_.current_tex_line)"
O script então usa re.find
da seguinte forma:
re.search(ignore, line)
Recentemente, em um esforço para se preparar para uma mudança para o python 3, a ignore
variável foi alterada para
ignore = r"^( _st_.goboom|print('SageT| ?_st_.current_tex_line))"
Por algum motivo, essa alteração causa meus problemas em alguns dos meus documentos.
Minha pergunta é: existe alguma diferença entre essas duas definições da ignore
variável se ela for usada em re.search
?
Obviamente, seria útil se eu pudesse postar por que isso está causando um problema para mim, mas o script é um pouco longo e o projeto em que estou usando o script é muito longo.
Resumindo: o script retorna o resultado correto com a primeira definição de ignore
e o script sempre retorna False
com a segunda definição de ignore
.
Espero que haja uma razão óbvia para que essas duas definições de ignore
resultem em um comportamento diferente.
O regex atualizado não possui um espaço que o regex anterior tinha.
Acho que o que se queria era simplesmente
Quanto à explicação... normalmente, espaços em regexes são caracteres literais.
Agora, eu admito, pode ser a mudança em si. Você passou de dizer que ia ignorar
para ignorar
(Observação: todos os caracteres '.' na regex também correspondem a qualquer caractere, mas não quero ter 258 * 6 linhas ou mais linhas explicando exatamente quais padrões estavam sendo ignorados.)