2013-10-11 5 views
1

Je cherche de l'aide pour une regex. J'ai le chemin suivant UNC \\server\share1\folder1 que je voudrais saisir server de. Le nom du serveur sera toujours différent et sera parfois une adresse IP.Reqex pour faire correspondre les barres obliques inversées

J'ai l'expression suivante avec laquelle j'ai travaillé mais je n'arrive pas à la faire fonctionner comme je le souhaite.

\\?.*\\ 

Ceci renvoie le résultat suivant \\server\share\. Quelqu'un peut-il m'aider à saisir server et non \\server\?

Répondre

2

Vous pouvez utiliser ceci:

^\\\\.*?\\ 

^ est un début d'ancrage de la ligne et correspondra uniquement au début.

.*? est une version modifiée de .* afin qu'elle corresponde à la correspondance du motif qui la suit; Il est généralement appelé à correspondre le moins possible, contrairement à son homologue «gourmand».


Vous pouvez également utiliser une classe niée:

^\\\\[^\\]+\\ 

[^\\]+ correspond à tout caractère sauf antislashs.


Et si vous voulez obtenir server sans anti-slash, vous devriez être en mesure d'utiliser un groupe de capture (en utilisant des parenthèses) et extraire le groupe adapté (par $1 ou \1):

^\\\\(.*?)\\ 

ou

^\\\\([^\\]+)\\ 

ou si UNC trouve tout premier match par défaut, vous pouvez simplement utiliser [^\\]+.

+1

Nous vous remercions de vos suggestions et de votre aide. J'ai pu obtenir la valeur que je voulais en utilisant "[^ \\] +" – Mpit52

+0

@ Mpit52 Oh, oui, ça marche généralement en fonction de la fonction que vous utilisez, mais si la façon de traiter la regex l'accepte, cool! :) – Jerry

+1

@Jerry: Un chemin UNC commence par * deux * barres obliques inverses, mais nous ne les voyions pas car l'OP n'utilisait pas le formatage du code. Cela signifie que la forme longue de votre regex aurait dû être "^ \\\\ ([^ \\] +) \\' '. –

0

Essayez de faire string.split (ou son équivalent dans la langue que vous utilisez) avec « \ », puis obtenir « serveur » du tableau résultant

0

Vous pouvez utiliser lookaround

(?<=^\\)[^\\]+(?=\\) 

Cela correspondrait à server dans \server\share\folder.

Questions connexes