2016-04-07 23 views
0

tüm Etiketleri bulabilirsiniz.Regex ben regex</p> <pre><code>b(?!^;#)w+s*w+|b </code></pre> <p>ve bu örnek dizisini izleyen var bir mulit değer taxononomy alanında

-1;#Class Study|0b4dac95-9e17-4af9-b849-6d283a99b561;#-1;#Matrix|dda77641-7b25-40f9-bb65-a0bca13776d3"; 

Sadece sonra gelen etiketi eşleşmesi gerekir;

 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); 

anda bu etiketi döndürür aynı zamanda döner # | Ben ortadan kaldırmak istiyorum | yanı

+0

Bu kısım 'in | ve kelime sınırı sarın; zaman (?!^#)' (olumsuz yönde) eşleşecek asla bir ' Bundan sonra gelir. – sln

+0

Kelime sınırlarını fırlatıp "(? <=; #) [^ |] * (? = \ | $)' – sln

+0

"(?! ^; #)' Ile değil; ne de '' 'bir' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 'bir sonraki kelime bir' '' 'kelimesi olması gerektiğinde hiçbir zaman (negatif bir şekilde) eşleşmeyecektir. Yani, temelde kullanılmamaktadır. – sln

cevap

2

Sadece bir lookahead

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

Demo here

+0

etikete ihtiyacım var ise | termi iade edildi mi? yani {Sınıf Çalışması | 0b4dac95-9e17-4af9-b849-6d283a99b561, Matrix | dda77641-7b25-40f9-bb65-a0bca13776d3} – monkeyjumps

İlgili konular