1

Given the string \\Server\Folder\File.EXT, what is the regular expression to return \\Server\ as the match? I tried ^\\\\(.*)\\, but that still allows for a backslash in the middle of the match, so I get \\Server\Folder\ as the match, not \\Server\. Within the group I need to match any number of characters other than \ I think.

Gordon
  • 6,257
  • 6
  • 36
  • 89

1 Answers1

3

Use negated character class instead of . in your regex.

^\\\\([^\\]*)\\

Or make it non-greedy using ?

^\\\\(.*?)\\
Pranav C Balan
  • 113,687
  • 23
  • 165
  • 188
  • 1
    Aha, I was just now trying the negation behind, not in front. And, curious since both approaches work, is one preferred over another in this scenario? Or are they both equally valid? – Gordon Dec 21 '16 at 17:48
  • Well, there where two answers there. ^\\\\([^\\]*)\\ works, and so does ^\\\\(.*?)\\. The latter, the "Make it non greedy" solution seems like the better approach, but I don't know enough to be sure. And the supposed duplicate answer doesn't really seem to explain the difference in function either. – Gordon Dec 21 '16 at 17:55
  • @Gordon : http://stackoverflow.com/a/41269468/3037257 – Pranav C Balan Dec 21 '16 at 18:50