Qual é a diferença entre (. *?) e (. *)? na regex?

1

Para expressões regulares, qual é a diferença entre (.*?) e (.*)? ?

    
por RockPaperLizard 13.09.2016 / 02:47

1 resposta

4

Eu usei o testador de regex em regex101.com (sem afiliação) para testá-los.

(.*?) corresponde a qualquer caractere ( . ) qualquer número de vezes ( * ), o menor número de vezes possível para fazer a correspondência de expressão regular ( ? ). Você obterá uma correspondência em qualquer sequência, mas capturará apenas uma sequência em branco devido ao ponto de interrogação. Esse recurso é muito mais útil quando você tem um regex mais complicado. Aqui, o analisador não precisa capturar nada para obter uma correspondência: o asterisco permite qualquer número de caracteres no grupo de captura, enquanto o ponto de interrogação faz com que o analisador salve o máximo possível do texto de entrada, resultando em nada sendo capturado.

(.*)? captura um grupo zero ou uma vez ( ? ). Esse grupo consiste em uma execução de qualquer tamanho ( * ) de qualquer caractere ( . ). Isso também corresponderá a qualquer coisa, mas capturará a primeira linha, já que o ponto corresponde a qualquer coisa, exceto uma nova linha.

    
por 13.09.2016 / 02:56

Tags