Regex para combinar com o conteúdo da tag enquanto omola simultaneamente para o espaço em branco e arrastar

StackOverflow https://stackoverflow.com/questions/3818219

Pergunta

Estou tentando escrever um regex que corresponda ao conteúdo inteiro de uma tag, menos qualquer espaço em branco principal ou à direita. Aqui está um exemplo abafado da entrada:

<tag> texto </tag>

Eu quero que apenas o seguinte seja correspondido (observe como o espaço em branco antes e depois da partida foi aparado):

"texto"

Atualmente, estou tentando usar este regex no .net (PowerShell):

(?<=<tag>(\s)*).*?(?=(\s)*</tag>)

No entanto, esse regex corresponde ao "texto" mais o espaço de branco principal dentro da tag, que não é inspirado. Como posso consertar meu regex para funcionar como esperado?

Foi útil?

Solução

Soltar os looks; Eles apenas tornam o trabalho mais complicado do que precisa. Em vez disso, use um grupo de captura para escolher a parte que você deseja:

<tag>\s*(.*?)\s*</tag>

A parte que você deseja está disponível como $matches[1].

Outras dicas

Você não deve usar o regext para analisar html.

Use um analisador em vez disso.

Também:Regex para remover atributos da etiqueta corporal (c#)

Também: Regex corresponde a tags abertas, exceto xhtml tags independentes

Se tudo isso não o convencer, não use o ponto no meio da sua expressão. Use a fuga alfanumérica. Seu ponto está consumindo espaço em branco. Use w (eu acho).

Use essas expressões regulares para retirar os espaços de branco à direita e liderança. /^\s+/ e /\s+$/

        test = "<tag>     test    </tag>";
        string pattern3 = @"<tag>(.*?)</tag>";
        Console.WriteLine("{0}", Regex.Match(test,pattern3).Groups[1].Value.Trim());
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top