Cadeia de teste:
[valign px=-2][center][bgcolor=GREEN]TESTING[/bgcolor][/center][/valign]
Eu descobri color.*?\]
algo que quase funciona... Ele pega tudo depois da palavra-chave, até e incluindo o colchete de fechamento:
color=GREEN] AND color] ---> Target ---> [bgcolor=GREEN] AND [/bgcolor]
Eu simplesmente não consigo entender como fazer o mesmo ao contrário
\[.*?color.*?\]
isso me dá a string inteira antes da chave até o colchete de fechamento - [valign px=-2][center][bgcolor=GREEN]
MAS também me dá corretamente [/bgcolor]
sem TESTING
entre eles
Estou usando https://regex101.com/ para testes
Se você quiser obter
[bgcolor=GREEN]
e[/bgcolor]
com caracteres minúsculos iniciais para cor e caracteres maiúsculos para cor para o valor, você pode usar:Veja uma demonstração do regex 101
Ou uma correspondência um pouco mais ampla usando uma classe de caractere negada denotada por
[^
A expressão regular em partes corresponde a:
\[
Corresponder[
[^][=]*
Corresponde 0+ vezes a qualquer caractere, exceto[
]
ou=
color
Combine literalmente(?:=[^][=]+)?
Opcionalmente, combine=
e 1+ vezes qualquer caractere, exceto[
]
ou=
]
Combine literalmenteVeja uma demonstração do regex 101
Supondo que você queira corresponder ao valor RHS para a
bgcolor
tag e que seu mecanismo de regex atual suporte o\K
sinalizador, você pode usar o padrão:Demonstração
Isso corresponde apenas a texto delimitado por colchetes não aninhados, pseudo-abrir/fechar ou tags autocontidas
no formulário onde a palavra-chave está presente.
[/?..keyword../?]
Isso pode ser útil para pesquisa e destaque.
https://regex101.com/r/OQZHC6/1