2010-12-17 10 views
-2

Ich habe einen regulären Ausdruck URLs übereinstimmen:URL regulären Ausdruck gewählten Art specifik Domain

(?:(?:http|ftp):\/\/)?[^\s]+\.[a-z]{2,}[^\s]* 

Jetzt möchte ich eine bestimmte URL und Variationen davon ermöglichen.

Wie www.example.com, http://example.com/slash/slah?hello=world.

In anderen Mitteln möchte ich meine Ausdruck nicht diesen Fällen entsprechen. Ich habe nach vorne geschaut und nach hinten gesehen, aber ich kann sie nicht wirklich einsetzen.

Ich dachte, vielleicht einen regulären Ausdruck zu machen, um die Ausnahmen übereinstimmen und ersetzen sie mit ___match, dann mit dem Original regexp und nur übereinstimmen, wenn es nicht mit beginnt.

Irgendwelche Vorschläge?

Antwort

0

Dies würde besser in zwei Schritten erfolgen, so etwas wie:

if ($url =~ /(?:(?:http|ftp):\/\/)?[^\s]+\.[a-z]{2,}[^\s]*/ && 
    $url !~ /www.example.com|http:\/\/example.com\/slash\/slah?hello=world/) 
{ 
    ... 
} 

(nicht sicher, welche Sprache Sie in der Arbeit, diese Perl-Code ist)