Como encontrar citações dentro de um Tag?
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
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.