Ich habe eine Eingabekette, die eine Verzeichnisadresse ist:
Beispiel: ProgramFiles/Micro/Telephone
Und ich möchte es sehr streng mit einer Wortliste abgleichen:
Beispiel: Tel|Tele|Telephone
Ich möchte mit Telephone
und nicht mit Tel
übereinstimmen. Im Moment sieht meine Regex so aus:
Der obige Regex passt zu Tel
. Was kann ich tun, um es zu beheben?
Wenn Sie eine vollständige Übereinstimmung wünschen:
%Vor% \b
ist eine Wortgrenze mit einer Breite von null. Wortgrenze bedeutet in diesem Fall den Übergang von oder zu einem Wortzeichen. Ein Wortzeichen ( \w
) ist [0-9a-zA-Z_]
.
Wenn Sie einfach mit dem längsten in einem Teilwortmatch übereinstimmen möchten, setzen Sie zuerst das längste. Zum Beispiel:
%Vor%oder
%Vor% Ändern Sie die Bestellungen: Tel|Tele|Telephone
in Telephone|Tele|Tel
.
Durch den Regexp-Algorithmus wird der Wechsel von links nach rechts durchsucht, wenn dort eine Übereinstimmung gefunden wird, das ist es, keine gierige Übereinstimmung.
Zum Beispiel: / a | ab | abc / Arbeiten an "abc" entspricht "a" anstelle des gierigsten "abc".
oder verwenden Sie die passenden Ausdrücke.
%Vor%Wie wäre es mit dem Versuch, eine Übereinstimmung zu finden, solange die längste Übereinstimmung nicht irgendwo in der Eingabe ist? Etwas wie:
Finden Sie Telefon, ODER finden Sie Tel, und Tele wo Telefon ist nicht irgendwo in der Eingabe. Also, um es wie eine Regex aussehen zu lassen:
(Telefon) ODER Zeichen ohne Telefon, gefolgt von (tel | tele) gefolgt von Zeichen ohne Telefon
(Telefon |. * (Telefon) {0}. * (Tel | Tele). * (Telefon) {0}. *)
Macht das irgendeinen Sinn?
Tags und Links regex