2009-08-12 20 views
1

Wir haben eine große Menge an statischen HTML-Links wie z.Finden Sie Leerzeichen in Anker-Links

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

Einige von ihnen enthalten jedoch Räume im Anker, z.

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

Irgendwelche Ideen auf, welche Art von regulären Ausdruck würde ich die Räume nach dem # und ersetzen sie durch eine verwenden, müssen zu finden - oder _

Update: müssen sie nur finden mit TextMate, daher keine HTML-Parsing-Lib erforderlich.

Antwort

2

sollten Diese Regex es tun:

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

Drei Caveats.

Erstens, wenn Sie Angst haben, dass die Seite Text selbst (und nicht nur die Links) können Informationen wie „#Hashtag mehr Wörter“ enthalten, dann könnte man die Regex restriktiver machen, wie folgt aus:

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

Zweitens, wenn Sie Hash-Tags haben, die Zeichen jenseits von AZ enthalten, fügen Sie sie einfach zwischen den zweiten Klammern ein. Also, wenn Sie ‚-‘ als auch, würden Sie ändern, um:

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

Schließlich dies setzt voraus, dass alle Links, die Sie versuchen, mit einem Buchstaben/Wort beginnen zu entsprechen und gefolgt von einem Leerzeichen, so In der aktuellen Form würde es "Anchor-tags-galore" nicht entsprechen, würde aber "Anchor-Tags in Hülle und Fülle" entsprechen.

+0

Vielen Dank, die Links enthalten nur AZ so eine davon ist verpflichtet, den Trick zu tun :) – Tom

2

Haben Sie überlegt, eine HTML-Parsing-Bibliothek wie BeautifulSoup zu verwenden? Es würde es einfacher machen, alle hrefs zu finden!

+0

+1 - analysiert HTML mit einem HTML-Parser, nicht reguläre Ausdrücke. – Quentin

+0

ah ja, sollte erwähnt haben, ich muss sie alle nur in TextMate finden, ich habe meine Frage aktualisiert. – Tom

1

Hier passt diese Regex den Hash und alle Worte und Zwischenräume:

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

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

Wenn Sie etwas Zeit haben, sollten Sie "The Regex Coach", herunterladen, die eine ist Tolles Werkzeug, um eigene Regexes zu entwickeln. Sie erhalten sofort Feedback und Sie lernen sehr schnell. Plus es kommt kostenlos!

Visit the homepage

+0

Sieht super aus, aber es gibt keine Mac-Version :( – Tom

+1

Vielleicht können Sie dies versuchen: http: //www.rustyrazorblade .com/2007/12/02/Regex-Trainer-Mac-Ersatz / –

Verwandte Themen