J'ai une page HTML (il est hors d'une application de carnet d'adresses interne) et j'essaie de faire correspondre à la fois le nom du champ et la valeur du champ sur une table.Expression régulière .NET -? ne fonctionne pas (comme je pense qu'il devrait)
L'expression régulière que j'ai concocté est jusqu'à présent
"href.*?>(.*?)<\\/a.*>(.*?)<\\/span"
qui correspond à la plupart des clés et des valeurs très bien. Le problème est que certaines des valeurs sont aussi des liens.
chaîne Exemple (sans lien - travaux)
href="JavaScript:updateField("peopleType", "390061", "[email protected]", "bob", "Reg", "Bob Bobson");" onMouseOver="window.status='Update this field if possible, else explain how to update it';return true;" onMouseOut="window.status='';return true;">Emp Type</a></span></td>
<td nowrap=""><span style="font-family: Arial, Times New Roman, Courier New, Courier, monospace; color: #006699">Reg</span
chaîne Exemple (avec lien - ne fonctionne pas)
href="JavaScript:updateField("dept", "390061", "[email protected]", "bob", "Reg", "Bob Bobson");" onMouseOver="window.status='Update this field if possible, else explain how to update it';return true;" onMouseOut="window.status='';return true;">Dept</a></span></td>
<td nowrap=""><span style="font-family: Arial, Times New Roman, Courier New, Courier, monospace">
<a href="JavaScript:showDept('TheBobs');" onMouseOver="window.status='Show People in This Dept';return true;" onMouseOut="window.status='';return true;">TheBobs</a></span
La première moitié (capture la clé) sur les œuvres correctement.Procédé (semble être) que le gourmand. * correspond tout le chemin jusqu'à la fin du lien où il trouve le caret de fin, puis le non-gourmand. *? dans le groupe de capture n'a plus rien à faire correspondre. J'ai essayé le RegEx
"href.*?>(.*?)<\\/a.*>(.*?)(<\\/a>)?<\\/span"
qui fonctionne très bien pour les cordes avec le lien (le troisième groupe de capture - avec le/a en elle) correspond à la fin du lien pour mon deuxième groupe de capture fonctionne, mais il ne fonctionne pas sur des valeurs qui ne sont pas des liens car (je pense) c'est la recherche du lien de fermeture. Je pensais que le? à la fin de ce groupe de capture devrait le rendre facultatif.
Je fais correspondre avec RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace | RegexOptions.Singleline.
Comment puis-je obtenir l'expression régulière pour correspondre à la fois le cas avec un lien dans la valeur, et sans? Merci.
Quels sont exactement le "nom de champ" et la "valeur de champ" supposés être dans vos échantillons? – Lucero