2010-09-16 5 views

Répondre

2

Je suis d'accord que le lien Radomir suggère est correct que HTML ne doit pas être analysé avec des expressions régulières. Cependant, ne pas d'accord que rien de significatif ne peut être tiré de leur utilisation ensemble. Et la diatribe qui s'ensuit est totalement contre-productive.

Pour corriger la RegEx de Robert:

<([^<]*)type=('|")hidden('|")>[^<]*(/>|</.+?>)

+0

Pas même à proximité. Par exemple, essayez '' ou ' '. Et ces deux exemples sont valides html. Peu importe les problèmes lors du traitement du monde réel html. Utilisez un analyseur. – Alohci

+0

@Alohci, * sans aucun doute * vous devriez utiliser un analyseur si vous le pouvez pour tout xml. @Niall, si vous avez besoin des espaces optionnels dans l'expression pour gérer les cas soulevés par Alohci, ça ne devrait pas être trop dur. Laid, oui, mais pas trop dur. – Brad

0

Les expressions régulières sont généralement le mauvais outil pour le travail lorsque vous essayez de rechercher ou de manipuler HTML ou XML; une bibliothèque d'analyse serait probablement une solution beaucoup plus propre et plus facile. Cela dit, si vous regardez simplement à travers un gros fichier et que la précision n'est pas critique, vous pouvez probablement raisonnablement faire quelque chose comme <input[^>]*type="?hidden"?.

+0

ngroot, cette expression est seulement une correspondance partielle. – Brad

+0

C'est correct. Il a demandé une expression qui trouverait ces étiquettes, ce qui sera généralement le cas. Qu'est-ce qu'il y a d'important si cela correspond à l'ensemble du tag? – ngroot

+0

Je ne pense pas que trouver * la moitié * du tag va vraiment aider, mais je vois ce que vous voulez dire. Cela ne me laissera pas vous refuser un vote. – Brad

2

Je sais que vous avez demandé une expression régulière, mais télécharger Html Agility Pack et procédez comme suit:

var inputs = htmlDoc.DocumentNode.Descendants("input"); 
foreach (var input in inputs) 
{ 
    if(input.Attributes["type"].Value == "hidden") 
    // do something 
} 

Vous pouvez également utiliser XPath avec pack agilité html .

Questions connexes