2016-04-07 3 views
0

は、私は次の正規表現正規表現はmulit値taxononomyフィールド内のすべてのラベル

\b(?!^;#)\w+\s*\w+\|\b 

と、このサンプル文字列を持って見つけます。

私は後に来るラベルと一致する必要が
-1;#Class Study|0b4dac95-9e17-4af9-b849-6d283a99b561;#-1;#Matrix|dda77641-7b25-40f9-bb65-a0bca13776d3"; 

;#

 string multipleFieldValue = "-1;#Class Study|0b4dac95-9e17-4af9-b849-6d283a99b561;#-1;#Matrix|dda77641-7b25-40f9-bb65-a0bca13776d3"; 
     var regex = new Regex(@"\b(?!^;#)\w+\s*\w+\|\b"); 
     string[] labels = multipleFieldValue.Split(new[] { ";#" },StringSplitOptions.None); 
     var matches = regex.Matches(multipleFieldValue); 


     Assert.AreEqual(2, matches.Count); 

は、現在、このラベルを返すだけでなく、返します| 私は|同様

+0

先読みで|と単語の境界をラップ '(^;?!#)' 'とき(否定的な方法で)一致しません\ w'はそれの後に来ます。 – sln

+0

'(?<=;#)[^ |] *(?= \ | $)' – sln

+0

'(?!^;#)'については、 ';' '# 'も単語' \ w'なので、次の文字が '\ w'のときは(否定的な形で)マッチしません。したがって、基本的には使用されていません。 – sln

答えて

2

ただ、この部分

\b(?!^;#)\w+\s*\w+(?=[?^(|)]\b) 

Demo here

+0

ラベルが必要な場合はどうすればいいですか? termIdが返されますか?すなわち、{クラススタディ| 0b4dac95-9e17-4af9-b849-6d283a99b561、マトリックス| dda77641-7b25-40f9-bb65-a0bca13776d3} – monkeyjumps

関連する問題