2009-06-02 26 views
44

Ich möchte wissen, was der Tilde-Operator in regulären Ausdrücken bedeutet.Tilde-Operator in regulären Ausdrücken

Ich habe diese Aussage:

if (!preg_match('~^\d{10}$~', $_POST['isbn'])) { 
    $warnings[] = 'ISBN should be 10 digits'; 
} 

ich dieses Dokument gefunden zu erklären, was Tilde bedeutet: ~

Es wird gesagt, dass =~ ist ein Perl-Operator, der diese Variable gegen diesen regulären Ausdruck laufen bedeutet.

Aber warum enthält mein regulärer Ausdruck zwei Tilde-Operatoren?

Antwort

52

In diesem Fall wird es nur als Trennzeichen verwendet. Normalerweise sind in PHP die ersten und letzten Zeichen eines regulären Ausdrucks Begrenzer, um die Anfangs- und Endposition eines passenden Teils zu markieren (falls Sie am Ende Modifikatoren hinzufügen möchten, wie Nicht-Gier, usw.).

Im Allgemeinen arbeitet PHP dies aus dem ersten Zeichen in einer Zeichenfolge, die als ein regulärer Ausdruck gemeint ist, der das zweite Vorkommen als zweites Trennzeichen abgleicht. Dies ist nützlich, wenn Sie im Text ein normales Trennzeichen vorfinden (z. B. Vorkommen / im Text) - das bedeutet, dass Sie keine unangenehmen Dinge tun müssen.

Matching für "//" mit dem Begrenzungszeichen auf "/"

/\/\//

Matching für "//" mit dem Trennzeichen von "#"

#//#

+1

ic, ich bin an das/delimiter gewöhnt, also war ich etwas verwirrt mit dem ~ Begrenzer. Danke fürs klarstellen. –

+0

Dies gilt nur für PCRE http://docs.php.net/manual/en/book.pcre.php und nicht POSIX ERE http://docs.php.net/manual/en/book.regex.php – Gumbo

6

In diesem Fall bedeutet es nichts. Es begrenzt einfach den Anfang und das Ende Ihres Musters. In PCRE (Perl Compatible Regular Expressions), das ist, was Sie mit preg_ * in PHP verwenden, ist die Mustereingabe an der Seite der Ausdruck Optionen, etwa so:

preg_match("/pattern/opt", ...); 

jedoch die Verwendung von "/" als Trennzeichen ist in diesem Fall willkürlich - obwohl Schrägstrich populär ist, kann es durch irgendetwas ersetzt werden. In deinem Fall ist es eine Tilde.

+0

Oh, Ok .. Ich habe den regulären Ausdruck aus dem Buch .. Sie haben nicht erklärt, was es bedeutet. So war ein wenig verwirrt. Ich habe nur versucht, Dinge zu klären, weil ich verwirrt bin. Vielen Dank! –

+0

'/' ist beliebt, weil es das Standardtrennzeichen für Perl-Ausdrücke ist, für die preg steht;) –

Verwandte Themen