Como criar uma sintaxe de expressão regular para tags HTML?
Expressões regulares têm posições insubstituíveis no processo de processamento de seqüências de processamento. Atualmente, existem pacotes de suporte regular de expressão correspondentes em idiomas de alto nível de computador.
Se tratarmos o código HTML em uma página da Web como uma string estruturada, como podemos extrair as tags HTML desejadas (tags) de uma maneira semelhante às expressões regulares?
Não vamos considerar como implementá-lo primeiro, mas considere como descrever a tag HTML de maneira regular semelhante à expressão. Para obter uma tag HTML, você precisa conhecer os 2 tipos de atributos da tag:
1. A localização do rótulo;
2. Os atributos da própria tag;
Por exemplo, na página HTML a seguir:
<html>
<Body>
<div id = "BodyWrapper">
<div id = "LeftWrapper">
</div>
<div id = "RightWrapper">
<div>
<div>
<div>
<div>
</div>
</div>
</body>
</html>
Se você deseja extrair a segunda tag Div no código HTML acima, preciso especificar as informações de ID, classe e localização da div. A questão agora é: como projetar uma gramática de expressão que atenda aos requisitos acima?
por exemplo:
getTag: div {tag-name: div; posição de tag: 2; classe de tag: colun; tag-id:; conteúdo de tag :;}
Tag-Parent {Tag-Name: Div; Posição de tag: 2; Classe de tag: coluna; tag-id:; conteúdo de tag :;}
Tag-Child {......}
Acima disso, há uma sintaxe descritiva fácil de entender.
Ou uma sintaxe do tipo python:
getTag: div
nome de tag:
tag-id:
Posição de tag: 2
Classe de tag: coluna
conteúdo de tag:
parente de tag:
nome de tag:
tag-id:
Posição de tag: 2
Classe de tag: coluna
conteúdo de tag:
Tag-Child:
TAG-TYPE: Tabela
Não sei se existe uma forma de expressão gramatical mais adequada. Enquanto essa gramática de expressão puder ser projetada razoavelmente, o trabalho subsequente será fácil de fazer. O objetivo final disso é: os programadores podem analisar o código HTML com essa expressão, tão conveniente quanto o manuseio de sequências comuns.
Espero que todos participem e dêem mais idéias. Vou melhorar essa gramática com base no feedback de todos e fazer uma implementação com base nessa gramática.
Consulte:
Uma introdução básica às expressões regulares pode ser encontrada aqui:
http://www.vevb.com/htmldata/2006-03-16/1142469074.html
http://www.vevb.com/htmldata/2006-03-16/1142468929.html
As expressões regulares foram propostas pela primeira vez pelo matemático Stephen Kleene em 1956, com base nos resultados incrementais da pesquisa da linguagem natural. Expressões regulares com sintaxe completa foram usadas na forma de correspondência de caracteres e posteriormente aplicadas ao campo da tecnologia da informação fundida. Desde então, após vários períodos de desenvolvimento, os padrões atuais foram aprovados pela ISO (International Standards Organization) e reconhecidos pelo grupo aberto.
Expressões regulares não são um idioma especializado, mas podem ser usadas como padrão para encontrar e substituir o texto em um arquivo ou caractere. Possui dois padrões: expressões regulares básicas (BRE), expressões regulares estendidas (ERE). Inclui funções BRE e outros conceitos.
Expressões regulares são usadas em muitos programas, incluindo XSH, EGREP, SED, VI e programas sob a plataforma Unix. Eles podem ser adotados por muitos idiomas, como HTML e XML, que geralmente são apenas um subconjunto de todo o padrão.