Ich versuche den letzten Teil nach dem letzten Backslash zu fangen, den
ich brauche \Web_ERP_Assistant
(mit dem \
)
Meine Idee war:
C:\Projects\Ensure_Solution\Assistance\App_WebReferences\Web_ERP_WebService\Web_ERP_Assistant
\\.+?(?!\\) // I know there is something with negative look -ahead `(?!\\)`
Aber ich kann es nicht finden.
Antworten:
Ihre negative Lookahead-Lösung wäre z. B.:
Sehen Sie es hier auf Regexr
quelle
(?:
ist der Beginn einer nicht erfassenden Gruppe. Das.
ist ein beliebiges Zeichen, dies überprüft jedes Zeichen, wenn es nicht von einem `` gefolgt wird.$
. Standard ist das Ende der Zeichenfolge, Multiline das Ende der Zeile. Da der Testtext in Regexr mehrere Zeilen enthält, benötige ich diese Option dort.(?:[^\\/](?!(\\|/)))+$
Entfernt den Schrägstrich am Anfang und bewältigt sowohl Schrägstriche als auch Schrägstriche. Es stimmt auch mit der gesamten Zeichenfolge für Pfade ohne Schrägstriche überein,(?:(?!\\).)+
. ( ref ) Außerdem verwendet Ihr Beispiel in RegExr zwei Backslashes, um Pfadkomponenten zu trennen. es sollte nur eine, und die Regex sollte passen nur einen. ( Demo )Eine, die für mich funktioniert hat, war:
Probieren Sie es online aus!
Erläuterung:
quelle
Ein negativer Blick nach vorne ist eine richtige Antwort, kann aber sauberer geschrieben werden als:
Dies sucht nach einem Vorkommen von \ und sucht dann bei einer Prüfung, die nicht übereinstimmt, nach einer beliebigen Anzahl von Zeichen, gefolgt von dem Zeichen, das Sie danach nicht sehen möchten. Da es negativ ist, stimmt es nur überein, wenn es keine Übereinstimmung findet.
quelle
Sie können versuchen, es am Ende der Zeichenfolge zu verankern
\\[^\\]*$
. Obwohl ich nicht sicher bin, ob man für die Aufgabe unbedingt Regexp verwenden muss.quelle
([^\/]*)$
Entspricht dem Dateinamen in einem Pfad für eine Linux-Box. Können Sie erklären, wie das Caret^
in diesem Zusammenhang funktioniert? Ich habe es immer nur verwendet, um den Beginn von Zeichenfolgen zu kennzeichnen.[^\/]
entspricht jedem Zeichen außer/
.Was ist mit dieser Regex:
\\[^\\]+$
quelle
Wenn Sie nicht den Backslash, sondern nur den Text danach einfügen möchten, versuchen Sie Folgendes:
([^\\]+)$
oder für Unix:([^\/]+)$
quelle
Ich habe unter Regex verwendet, um dieses Ergebnis auch dann zu erhalten, wenn es mit a beendet ist
\
[Regex Demo]
quelle