J'essaye d'attraper la dernière partie après la dernière barre oblique inverse,
j'ai besoin du \Web_ERP_Assistant
(avec le \
)
Mon idée était:
C:\Projects\Ensure_Solution\Assistance\App_WebReferences\Web_ERP_WebService\Web_ERP_Assistant
\\.+?(?!\\) // I know there is something with negative look -ahead `(?!\\)`
Mais je ne peux pas le trouver.
Réponses:
Votre solution de recherche négative serait par exemple la suivante:
Voir ici sur Regexr
la source
(?:
est le début d'un groupe non capturant. Le.
est n'importe quel caractère, ceci vérifie n'importe quel caractère s'il n'est pas suivi d'un ``.$
. Standard est la fin de la chaîne, avec Multiline sa fin de la ligne. Parce que le texte de test dans Regexr a plusieurs lignes, j'ai besoin de cette option.(?:[^\\/](?!(\\|/)))+$
supprime la barre oblique au début et fait face aux barres obliques avant et arrière. Il correspond également à la chaîne entière pour les chemins sans aucune barre oblique,(?:(?!\\).)+
. ( ref ) De plus, votre exemple sur RegExr utilise deux antislashs pour séparer les composants du chemin; il ne devrait y en avoir qu'un, et l'expression régulière ne devrait correspondre qu'à une seule. ( démo )Celui qui a fonctionné pour moi était:
Essayez-le en ligne!
Explication:
la source
Un regard négatif sur l'avenir est une bonne réponse, mais cela peut être écrit plus proprement comme:
Cela recherche une occurrence de \, puis dans une vérification qui ne correspond pas, il recherche un nombre quelconque de caractères suivi du caractère que vous ne voulez pas voir après. Parce qu'il est négatif, il ne correspond que s'il ne trouve pas de correspondance.
la source
Vous pouvez essayer de l'ancrer à la fin de la chaîne, quelque chose comme
\\[^\\]*$
. Bien que je ne sois pas sûr qu'il faille absolument utiliser l'expression rationnelle pour la tâche.la source
([^\/]*)$
correspond au nom de fichier dans un chemin pour une boîte Linux. Pouvez-vous expliquer comment fonctionne le curseur^
dans ce contexte? Je ne l'ai jamais utilisé que pour signifier le début des cordes.[^\/]
correspond à n'importe quel caractère sauf pour/
.Et cette regex:
\\[^\\]+$
la source
Si vous ne voulez pas inclure la barre oblique inverse, mais seulement le texte après, essayez ceci:
([^\\]+)$
ou pour unix:([^\/]+)$
la source
J'ai utilisé ci-dessous regex pour obtenir ce résultat également quand il est terminé par un
\
[Regex Demo]
la source