c# - Regular expression MatchCollection returns 1 instead of expected 3 -


i have long string in c# it's formatted such \\server\value i've been using regular expression pattern of "(?<='\\\\).*(?=\\)" extract server string. there's use case multiple '\server\value' strings chained '\\servera\value1' + '\\serverb\value2' + '\\serverc\value3'

i'm trying use matchcollection extract server name using pattern (?<=.\\\\).*(>=\\)

the period in first grouping construct account ' character. expect result return 3 occurences returns 1. what's wrong pattern?

   string expression = "'\\\\servera\\value1' + '\\\\serverb\\value2' + '\\\\serverc\\value3'";    string pattern = @"(?<=\\\\).*(?=\\)";     matchcollection matches;    matches = regex.matches(expression, pattern); 

if got, i're getting result

servera\value1' + '\\serverb\value2' + '\\serverc 

and want these matches:

servera  serverb  serverc 

you can use lazy quantification:

(?<=\\\\).*?(?=\\) 

Comments

Popular posts from this blog

c++ - OpenCV Error: Assertion failed <scn == 3 ::scn == 4> in unknown function, -

php - render data via PDO::FETCH_FUNC vs loop -

The canvas has been tainted by cross-origin data in chrome only -