Próbuję złapać ostatnią część po ostatnim odwrotnym ukośniku
Potrzebuję \Web_ERP_Assistant
(z \
)
Mój pomysł był:
C:\Projects\Ensure_Solution\Assistance\App_WebReferences\Web_ERP_WebService\Web_ERP_Assistant
\\.+?(?!\\) // I know there is something with negative look -ahead `(?!\\)`
Ale nie mogę tego znaleźć.
Odpowiedzi:
Twoje negatywne rozwiązanie lookahead wyglądałoby na przykład tak:
Zobacz to tutaj na Regexr
źródło
(?:
to początek grupy bez przechwytywania. To.
jest dowolny znak, sprawdza każdy znak, jeśli nie występuje po nim znak ``.$
. Standard to koniec ciągu, a Multiline to koniec wiersza. Ponieważ tekst testowy w Regexr ma wiele wierszy, potrzebuję tam tej opcji.(?:[^\\/](?!(\\|/)))+$
usuwa ukośnik na początku i radzi sobie z ukośnikami do przodu i do tyłu. Dopasowuje również cały ciąg znaków bez ukośników, np. Manual.doc(?:(?!\\).)+
. ( ref ) Również twój przykład w RegExr używa dwóch odwrotnych ukośników do oddzielenia składników ścieżki; powinien być tylko jeden, a wyrażenie regularne powinno pasować tylko do jednego. ( demo )Jeden, który działał dla mnie, to:
Wypróbuj online!
Wyjaśnienie:
źródło
Negatywne spojrzenie w przyszłość jest poprawną odpowiedzią, ale można je zapisać jaśniej, na przykład:
To wyszukuje wystąpienie \, a następnie podczas sprawdzania, które nie jest dopasowane, szuka dowolnej liczby znaków, po których następuje znak, którego nie chcesz widzieć po nim. Ponieważ jest ujemny, pasuje tylko wtedy, gdy nie znajdzie dopasowania.
źródło
Możesz spróbować zakotwiczyć go na końcu sznurka, na przykład
\\[^\\]*$
. Chociaż nie jestem pewien, czy absolutnie trzeba użyć wyrażenia regularnego do tego zadania.źródło
([^\/]*)$
pasuje do nazwy pliku w ścieżce do komputera z systemem Linux. Czy możesz wyjaśnić, jak^
działa daszek w tym kontekście? Użyłem go tylko do oznaczenia początku strun.[^\/]
pasuje do dowolnego znaku oprócz/
.A co z tym wyrażeniem regularnym:
\\[^\\]+$
źródło
Jeśli nie chcesz dołączać odwrotnego ukośnika, ale tylko tekst po nim, spróbuj tego:
([^\\]+)$
lub dla unix:([^\/]+)$
źródło
Użyłem poniżej wyrażenia regularnego, aby uzyskać ten wynik również wtedy, gdy jest zakończony rozszerzeniem
\
[Regex Demo]
źródło