, więc mam pewien rodzaj internowanych adresów URL: na przykład "/img/pic/Image1.jpg" lub "/pic/Image1.jpg" lub po prostu "Image1.jpg" i potrzebuję aby dopasować to "Image1.jpg", innymi słowy chcę dopasować ostatnią sekwencję znaków po/lub jeśli nie ma/po prostu sekwencji znaków. Z góry dziękuję!Dopasuj ostatnie słowo po/
Odpowiedz
.*/(.*)
nie będzie działać, jeśli nie ma/s.
([^/]*)$
powinien działać niezależnie od tego, czy istnieje, czy nie.
Ale '[\ s \ S] */(. *)' Będzie. – Gumbo
.*/([^/]*)
Grupa przechwytująca dopasowuje ostatnią sekwencję po /.
Nie pasuje do 'Image1.jpg' –
Poniższe wyrażenie by rade.
/([\w\d._-]*)$
Albo jeszcze łatwiejszy (ale myślę, że ten został również opublikowany poniżej przede mną)
([^/]+)$
Coś */(*.) $ (szczegóły zależą od tego, czy mówimy o Perlu, czy innym dialekcie wyrażeń regularnych)
Po pierwsze. * dopasowuje wszystko (w tym ukośniki). Następnie jest jeden ukośnik, a następnie. * Który dopasowuje wszystko od tego ukośnika do końca (to jest $).
* Działa łapczywie od lewej do prawej, co oznacza, że gdy masz wiele ukośników, pierwszy. * Będzie pasował do wszystkich oprócz ostatniego.
Twoje wyrażenie * wymaga * ukośnika, więc' Obraz1.jpg' nie będzie pasował –
W Ruby Można by napisać
([^\/]*)$
wyrażeń regularnych w Ruby są dość uniwersalne i można je testować żyć tutaj: http://rubular.com/ Przy okazji: być może istnieje inne rozwiązanie, które nie wymaga wyrażeń regularnych? E.g File.basenam(path)
(ponownie Ruby)
Edytuj: profjim opublikował go wcześniej.
Zauważyłem, że powiedziałeś w swoich komentarzach, że używasz javascript. W rzeczywistości nie potrzebujesz do tego wyrażeń regularnych i zawsze myślę, że fajnie jest mieć alternatywę do używania regex.
var str = "/pic/Image1.jpg";
str.split("/").pop();
// example:
alert("/pic/Image1.jpg".split("/").pop()); // alerts "Image1.jpg"
alert("Image2.jpg".split("/").pop()); // alerts "Image2.jpg"
Właściwie nie potrzebujesz do tego celu wyrażeń regularnych.
s="this/is/a/test"
s.substr(s.lastIndexOf("/")+1)
=> test
i również działa dobrze na smyczki bez /
bo wtedy lastIndexOf zwraca -1.
s="hest"
s.substr(s.lastIndexOf("/")+1)
=> hest
Proste regex, które ja testowałem:
\w+(.)\w+$
Oto dobrym miejscu można przetestować go na: http://rubular.com/
- 1. Extract ostatnie słowo w ciągu znaków po przecinku, jeśli istnieje wiele słów else pierwsze słowo
- 2. Snowball Stemmer wywodzi tylko ostatnie słowo
- 3. Zamień ostatnie słowo w ciągu znaków
- 4. Wyodrębnij ostatnie słowo w ciągu z Swiftem
- 5. Ostatnie słowo wyświetlane w wyglądzie tekstowym
- 6. R usuń ostatnie słowo ze stringa
- 7. Wyodrębnij ostatnie słowo w ciągu znaków w R
- 8. Instrukcja SQL, aby znaleźć ostatnie słowo w ciągu znaków
- 9. Extract ostatnie słowo z łańcucha przy użyciu C#
- 10. Wyrażenie regularne, aby znaleźć ostatnie słowo w zdaniu
- 11. przechodzenie C ciąg: pobierz ostatnie słowo ciągu znaków
- 12. Jak mogę dostać ostatnie słowo w każdej linii z bash
- 13. Python: Cenzorowanie słowa w tekście, ale ostatnie słowo nie cenzoruje
- 14. Zastąp pierwsze i ostatnie słowo ciągu w sposób najbardziej pythonic
- 15. Regexp JavaScript - Dopasuj znaki po określonej frazie
- 16. Php zamapować słowo po nawiasie
- 17. Regex - Dopasuj wszystkie wystąpienia?
- 18. regex dopasuj i zamień wiele wzorców
- 19. Dlaczego słowo "nie pojawia się" po uruchomieniu?
- 20. Niespodziewane słowo kluczowe "foreach" po znaku "@"
- 21. Odwróć ciąg słowo po słowie w Javie
- 22. Dopasuj pojedyncze słowo z możliwą interpunkcją lub liczbą mnogą na końcu (Regex)
- 23. Dopasuj oś R na wykresach po wykresie (...) i liniach (...)?
- 24. XPath: Dopasuj całe słowo (używając funkcji dopasowywania z flagą niewrażliwą na wielkość znaków)
- 25. Elasticsearch dopasuj podciąg w php
- 26. Jak wykonać wiele wartości "dopasuj" lub "dopasuj" w ElasticSearch
- 27. Wybierz ostatnie dotknięte wiersze
- 28. Sql Server Decimal (30,10) tracąc ostatnie 2 miejsca po przecinku
- 29. Scala Dopasuj/Porównaj wyliczenia
- 30. Dopasuj wysokości ActionBar oddzielnie
regex jest uniwersalna), ale to dla javascript regex –
Wyrażenia regularne nie są uniwersalny, istnieje kilka smaków o różnych możliwościach. Ale to wyrażenie Perla wykona twoje zadanie: '^ (?:. * /) * (. *) $' –
nie potrzebujesz do tego celu wyrażenia regularnego.użyj swojego ulubionego języka, podziel na "/", a następnie zdobądź ostatni element. Znacznie prostsze niż tworzenie regex. – ghostdog74