2015-12-16 31 views
6

chcę wyodrębnić drugi „rozszerzenie” w nazwie pliku tak:Regex wyodrębnia ciąg po drugim "." Znak kropki na końcu łańcucha

/Users/path/my-path/super.lol.wtf/main.config.js 

Co potrzebne jest:

.config.js 

Co byłoby niesamowite jeśli mam tablicę z 2 strun w zamian:

var output = ['main', '.config.js']; 

Co próbowałem:

^(\d+\.\d+\.) 

Ale to nie działa.

Dzięki

+0

Czego można oczekiwać od 'hello.world/foo.bar.fizz.buzz'? lub '.htaccess'? –

Odpowiedz

6

można użyć następujących:

([^\/.\s]+)(\.[^\/\s]+)$ 

Example Here

  • ([^\/.\s]+) - Przechwytywanie grupa z wyłączeniem znaków / i . dosłownie jak również dowolnego znaku białej przestrzeni (s) jeden lub więcej razy.

  • (\.[^\/\s]+) - Podobne do powyższego wyrażenia; przechwytywanie grupy zaczynającej się od postaci . dosłownie; z wyłączeniem znaków i liter, jak również dowolnych znaków spacji raz lub więcej razy.

  • $ - Koniec linii


Alternatywnie, można również użyć następujących:

(?:.*\/|^)([^\/.\s]+)(\.[^\/\s]+)$ 

Example Here

  • (?:.*\/|^) - Sam Jako powyższe wyrażenie, z wyjątkiem tego, zawęzi to dopasowanie, aby zmniejszyć liczbę kroków. Jest to grupa niezapisująca, która dopasuje początek linii lub znak /.

Pierwszy wyraz jest krótsza, ale druga ma lepszą wydajność.

Oba wyrażenia będzie pasować, co następuje:

['main', '.config.js'] 

w każdym z następujących powodów:

/Users/path/my-path/some.other.ext/main.config.js 
some.other.ext/main.config.js 
main.config.js 
+0

niesamowite dzięki! lubisz – randomKek

+0

czy można także wyodrębnić "config"? to byłoby całkowicie niesamowite – randomKek

+1

@randomKek Tak, patrz - https://regex101.com/r/nN4vS7/1 ... a jeśli nie chcesz, aby "config" zaczynało się od kropki, https: // regex101. com/r/xG6dL4/1 –

3

Oto co trzeba:

(?:\/?(?:.*?\/)*)([^.]+)*\.([^.]+\.[^.]+)$ 
  • (?: środki wykrywania i zignorować,
  • [^.]+ oznacza nic oprócz .
  • .*? przeminie aż do ostatniego /

Sprawdź Here

+1

https://regex101.com/r/oX5aG2/1 – randomKek

+0

dzięki za odpowiedź btw! :) – randomKek

+1

ładna strona. naprawiono –

Powiązane problemy