ti-enxame.com

Regex Última ocorrência?

Estou tentando pegar a última parte depois da última barra invertida
Eu preciso do \Web_ERP_Assistant (com o \)

Minha ideia foi: 

C:\Projects\Ensure_Solution\Assistance\App_WebReferences\Web_ERP_WebService\Web_ERP_Assistant


\\.+?(?!\\)      //  I know there is something with negative look -ahead `(?!\\)`

Mas não consigo encontrar.

[Regexer Demo]

70
Royi Namir

A sua solução de lookahead negativo, por exemplo, seja isso:

\\(?:.(?!\\))+$

Veja aqui aqui no Regexr

58
stema

Um olhar negativo à frente é uma resposta correta, mas pode ser escrita de forma mais clara como:

(\\)(?!.*\\)

Isso procura uma ocorrência de\e, em seguida, em uma verificação que não é correspondida, ele procura por qualquer número de caracteres seguido pelo caractere que você não deseja ver após ele. Porque é negativo, só coincide se não encontrar uma correspondência.

30
TimE

Você pode tentar ancorá-lo ao final da string, algo como \\[^\\]*$. Embora eu não tenha certeza se alguém absolutamente precisa usar o regexp para a tarefa.

24
Michael Krelin - hacker

Um que funcionou para mim foi:

.+(\\.+)$

Experimente online!

Explicação:

.+     - any character except newline
(      - create a group
 \\.+   - match a backslash, and any characters after it
)      - end group
$      - this all has to happen at the end of the string
21
Jeeter

E sobre esta regex: \\[^\\]+$

7
SERPRO

Eu usei abaixo da regex para obter esse resultado também quando terminar por um \

(\\[^\\]+)\\?$

[Regex Demo]

2
shA.t

Se você não quiser incluir a barra invertida, mas apenas o texto depois, tente isto: ([^\\]+)$ ou unix: ([^\/]+)$

0
Katja