2016-04-12 33 views
0

Bir regexp desenim var ancak istediğim gibi çalışmıyor.Regexp pattern yan tümce

önerildiği gibi
per_name != 'John' 
per_name != 'Peter' 
+6

Gereksinimler nelerdir? Sadece ['\ w + \ s *! = \ S * '[^'] * ''] (http://regexstorm.net/tester?p=%5cw%2b%5cs*!%3d%5cs*%27 Şu anki belirsiz soru karşısında% 5b% 5e% 27% 5d *% 27 & i = per_name +!% 3d +% 27John% 27 +% 26% 26 + per_name +!% 3d +% 27Peter% 27) kullanılabilir. –

+1

Kodlarımın, olası tüm SQL kombinasyonları üzerinde çalışmasını istiyorum. – codeator

+0

Sadece makaleyi bölmek istiyorsanız, [Split] 'i de kullanabilirsiniz (https://msdn.microsoft.com/en-gb/library/ms228388.aspx). Sınırlayıcı olarak '&&' ve '||' kullanın ve bunları bir dizide saklayın. Şimdi 'whereClauseText.Split (sınırlayıcı)' olarak adlandırın. Bu size, bulunduğunuz yerdeki öğelerle birlikte bir dizi verir. – Urknecht

cevap

0

, benim yorumunu post ediyorum:

O Split aracılığıyla nerede maddesini bölmek kolay olurdu olarak

Regex re = new Regex(@"\w[\w\d]* \s*[<>!=like]{1,4}\s* (\?|\w[\w\d]*|(\w[\w\d]*)*((?<PR>\()|(?<-PR>\))|[^()])+)", RegexOptions.IgnorePatternWhitespace | RegexOptions.Compiled); 

MatchCollection mc = re.Matches("per_name != 'John' && per_name != 'Peter'"); 

foreach (Match m in mc) { 
    Console.WriteLine(m.Value);   
} 

benim kodun çıktısı istiyorum. Sınırlayıcınız &&, ||, AND, OR, olabilir. Eğer StringSplitOptions ile arount oynayabilir böylece

string whereClauseText = "per_name != 'John' && per_name != 'Peter'"; 
string[] operators = new string[] {'&&','||','AND','OR'}; 

string[] clauses = whereClauseText.Split(operators, StringSplitOptions.None); 
foreach (string clause in clauses) 
{ 
    Console.WriteLine(clause); 
} 

Ayrıca, String.Split Method bakmak shoul: İşte bir örnek.

+0

string whereClauseText = "per_name! =" John '&& per_name! =' Pe & &ter'";? – codeator

+0

derken ne yapabilirim, bu geçerli bir deyim olup olmayacağından emin değilim ve ayrıca emin olup olmadığınızdan emin değilim SqlConneciton komutları veya standart SQL kullanarak, bunu söylemek zor.Lütfen "whereClauseText.Split()' yi kullanabilir ve sadece "string" dizgesindeki öğelerin SQL Operatörleri gibi "! =", '=', 'şeklinde olup olmadığını kontrol edebilirsiniz. Eğer işleç varsa, geçerli bir yan tümce varsa, sadece bağlı olan dizgeyi bir işleç içerene kadar bir sonraki öğe ile "yan tümce" yi bağla. Eğer bu sorunun cevabını çözdüyse, lütfen – Urknecht

+0

Hi @codeator yardımcı olur. [onaylamak] (http://meta.stackexchange.com/q/5234/179419) onay işaretini tıklayarak bu, bir çözüm bulduğunuz ve hem yanıt veren hem de Bunu yapmak için bir zorunluluk yoktur. – Urknecht

İlgili konular