2009-08-12 5 views
1

Nous avons une grande quantité de statique que HTML a des liens comme par ex.Trouver des espaces dans les liens d'ancrage

<a href="link.html#glossary">Link</a> 

Cependant, certains d'entre eux contiennent des espaces dans l'ancrage, par ex.

<a href="link.html#this is the glossary">Link</a> 

Des idées sur ce genre d'expression régulière que je dois utiliser pour trouver les espaces après le # et les remplacer par un - ou _

Mise à jour: juste besoin de les trouver en utilisant TextMate, donc pas besoin d'une librairie d'analyse HTML.

Répondre

2

Cette regex devrait le faire:

#[a-zA-Z]+\s+[a-zA-Z\s]+ 

Trois mises en garde.

Tout d'abord, si vous avez peur que le texte de la page elle-même (et pas seulement les liens) peut contenir des informations comme « #hashtag plus de mots », alors vous pourriez faire le regex plus restrictive, comme ceci:

#[a-zA-Z]+\s+[a-zA-Z\s]+\"> 

Deuxièmement, si vous avez des étiquettes de hachage qui contiennent des caractères au-delà de AZ, il suffit de les ajouter entre le deuxième ensemble de parenthèses. Donc, si vous avez « - » ainsi, vous devez modifier à:

#[a-zA-Z]+\s+[a-zA-Z-\s]+\"> 

Enfin, cela suppose que tous les liens que vous essayez de faire correspondre commencer par une lettre/mot et sont suivis d'un espace, , dans la forme actuelle, il ne correspondrait pas à "Anchor-tags-galore", mais correspondrait à "Anchor tags galore".

+0

Merci beaucoup, les liens ne contiennent AZ donc l'un d'entre eux est lié à faire l'affaire :) – Tom

2

Avez-vous envisagé d'utiliser une bibliothèque d'analyse HTML comme BeautifulSoup? Cela rendrait la recherche de tous les hrefs beaucoup plus facile!

+0

+1 - analyser HTML avec un analyseur HTML, pas des expressions régulières. – Quentin

+0

ah oui, aurait dû mentionner que j'ai juste besoin de tous les trouver dans TextMate, j'ai mis à jour ma question. – Tom

1

Ici, ce regex correspond au hachage et tous les mots et les espaces entre les deux:

#(\w+\s)+\w+ 

http://dl.getdropbox.com/u/5912/Jing/2009-08-12_1651.png

Lorsque vous avez un peu de temps, vous devez télécharger "The Regex Coach", qui est un outil génial pour développer vos propres regex. Vous obtenez des retours instantanés et vous apprenez très vite. De plus, il vient sans frais!

Visit the homepage

+0

Regarde génial, mais il n'y a pas une version mac :( – Tom

+1

Peut-être que vous pouvez essayer celui-ci: http: //www.rustyrazorblade .com/2007/12/02/regex-coach-mac-substitut / –