O retorno retroativo catastrófico não deveria estar acontecendo neste regex
Alguém pode explicar por que o mecanismo de regex do Java entra no modo de retorno catastrófico nesse regex? Cada alternância é mutuamente exclusiva com todas as outras alternâncias, pelo que se
^(?:[^'\"\\s~:/@#\\|\\^\\&\\[\\]\\(\\)\\\\\\{\\}][^\"\\s~:/@#\\|\\^\\&\\[\\]\\(\\)\\\\\\{\\}]*|
\"(?:[^\"]+|\"\")+\"|
'(?:[^']+|'')+')
Text:'pão de açúcar itaucard mastercard platinum SUSTENTABILIDADE])
adição de correspondência possessiva a algumas das alternativas corrige o problema, mas não tenho idéia do porquê - a lib de regex do Java deve ser extremamente complicada para voltar atrás em ramificações mutuamente exclusiva
^(?:[^'\"\\s~:/@#\\|\\^\\&\\[\\]\\(\\)\\\\\\{\\}][^\"\\s~:/@#\\|\\^\\&\\[\\]\\(\\)\\\\\\{\\}]*|
\"(?:[^\"]++|\"\")++\"|
'(?:[^']++|'')++')