Estou procurando um regex que comece --
e termine se:
- Outro
--
é encontrado (deve ser incluído), - Ou o fim da linha foi encontrado.
Para uma versão com fim de linha funciona com --[^\n]*
ou --.*$
e para a que termina com --
funciona --[^\n]*--
mas não consigo combinar as duas para que se --
encontrar outra não ocupe o resto da linha.
Por exemplo:
toto -- tata yoyo
vai combinar-- tata yoyo
toto -- tata -- yoyo
vai combinar-- tata --
Editar: de acordo com o comentário @duDE, tentei com, --[^\n]*(--|.*)
mas .*
parece vencer --
, pois no segundo exemplo, a correspondência do resultado é-- tata -- yoyo
Edit2: graças a @guest eu tenho a resposta, e isso é simplesmente--.*?(--|$)
NB: a propósito, eu uso https://www.debuggex.com/ para testar regex, que acho uma ótima ferramenta, e, mesmo que por exemplo com --[^\n]*(--|.*)
regex e toto -- tata -- yoyo
ele retorne "Don't match", podemos veja -- tata -- yoyo
as correspondências de peças desde destacadas.
Obrigado
Dependendo do seu tipo de regex, você pode usar:
Editar: Corresponde, agora, aos dois hífens, se existirem.
Demonstração e explicação
Talvez algo como
^.*(\<|$)
(qualquer coisa desde o início da linha até o início/fim da linha da palavra)...Graças a @guest que comentou minha pergunta, eu tenho a resposta, e isso é simplesmente
--.*?(--|$)
Para completar, a resposta correta é
https://regex101.com/r/8mDFeE/1
Com
.*?
(vs.*
) sendo a versão não gananciosa do padrão -- capturando o número mínimo de caracteres para a próxima correspondência em vez do máximo.