Pergunta

Eu tenho uma string como esta:

This <span class="highlight">is</span> a very "nice" day!

O que devo dizer ao meu RegEx-padrão em VB parece, para encontrar as aspas dentro da tag? Eu quero substituí-lo por algo ...

This <span class=^highlight^>is</span> a very "nice" day!

Algo como <( ") [^>] +> não funciona: (

Graças

Foi útil?

Solução

Depende do seu sabor regex, mas isso funciona para a maioria deles:

"(?=[^<]*>)

EDIT: Para qualquer um curioso como isso funciona. Isso se traduz em Inglês como "Encontrar uma citação que é seguido por um> antes da próxima <".

Outras dicas

Regexes são fundamentalmente mau de análise de HTML (ver você pode fornecer alguns exemplos de por que é difícil para XML de análise e HTML com um regex? por que). O que você precisa é um analisador HTML. Consulte Você pode fornecer um exemplo de análise de HTML com o seu analisador favorita? para exemplos usando uma variedade de analisadores.

Se você estiver usando VB.net você deve ser capaz de usar HtmlAgilityPack .

Tente isto: <span class="([^"]+?)?">

Isto deve obter o seu primeiro valor do atributo em uma tag:

<[^">]+"(?<value>[^"]*)"[^>]*>

Se a sua intenção é substituir todas as aspas dentro de tags, você poderia usar a seguinte expressão regular:

(<[^>"]*)(")([^>]*>)

Isso vai isolar os substrings antes e depois da sua aspa. Note que este não tenta jogo de abertura e fechamento aspas. Ele simplesmente corresponde a uma aspa dentro de uma tag.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top