Estou tentando combinar uma string que terá um formato semelhante ao seguinte:
username=joe password='this! is a password with "quotes" and spaces#913 custom1 customd afd weirdhuh? custom1=myvalue
Para explicar mais detalhadamente, esta é uma lista de variáveis separadas por sinais de igual. As variáveis válidas que podem ser passadas são: nome de usuário, senha e customX (onde X é qualquer número de dígito (s)).
Eu estou tentando especificamente combinar o campo de senha, já que a variável passada pode tecnicamente ter qualquer número de citações, espaços, etc, que são caracteres válidos. Decidi que o melhor "ponto de interrupção" a ser usado para determinar quando a string de senha termina é a existência de uma string "customX=" que infere que a próxima variável está sendo iniciada.
Portanto, no exemplo acima, a senha real seria:
'this! is a password with "quotes" and spaces#913 custom1 customd afd weird huh?
Cheguei ao seguinte regex:
(?i)password(?-i)=.+?(?= (?i)custom(?-i)\d+=)
Isso parece corresponder ao seguinte:
password='this! is a password with "quotes" and spaces#913 custom1 customd afd weird huh?
Este é o efeito que eu quero (eu posso facilmente analisar a "senha="), mas o problema é que este regex só parece funcionar se houver uma existência desse final "custom1 = myvalue" no final de a corda. Se isso for removido, não haverá correspondência alguma.
Eu preciso ser capaz de corresponder a string de senha, independentemente de o valor final estar presente ou não.
pontos de bônus, se você pode retirar a "senha=" para acabar com a senha real.