Wie kann ich mit Perl überprüfen, ob eine bestimmte Zeichenfolge einen bestimmten Teilstring enthält?
Insbesondere möchte ich sehen, ob s1.domain.com
die angegebene Zeichenfolgenvariable vorhanden ist.
string
perl
string-matching
Belgin Fisch
quelle
quelle
:
) gelten.Eine andere Möglichkeit ist die Verwendung regulärer Ausdrücke , wofür Perl berühmt ist:
Die Backslashes werden benötigt, da a
.
mit jedem Zeichen übereinstimmen kann. Sie können dies umgehen, indem Sie die Operatoren\Q
und verwenden\E
.Oder Sie können wie angegeben vorgehen und die Indexfunktion verwenden. Nur ein Wort der Warnung: Index gibt a zurück,
-1
wenn keine Übereinstimmung anstelle vonundef
oder gefunden werden kann0
.Dies ist also ein Fehler:
Dies ist falsch, wenn
s1.domain.com
es am Anfang Ihrer Zeichenfolge steht. Ich persönlich bin mehr als einmal daran verbrannt worden.quelle
index()
ist im einfachen Fall schneller als Regexps?=~
,index()
,~~
undmatch::simple
alle ein wenig schienawk
-ward ...: - \domain.com
passensubdomain.domain.com
über die REGEX verwenden, irgendwelche Ideen?Beispiel für eine Teilzeichenfolge ohne Berücksichtigung der Groß- und Kleinschreibung
Dies ist eine Erweiterung von Eugenes Antwort, die die Zeichenfolgen in Kleinbuchstaben konvertiert, bevor nach dem Teilstring gesucht wird:
quelle
fc
empfohlen wirdlc
.