Bir regexp desenim var ancak istediğim gibi çalışmıyor.Regexp pattern yan tümce
önerildiği gibiper_name != 'John'
per_name != 'Peter'
Bir regexp desenim var ancak istediğim gibi çalışmıyor.Regexp pattern yan tümce
önerildiği gibiper_name != 'John'
per_name != 'Peter'
, 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.
string whereClauseText = "per_name! =" John '&& per_name! =' Pe & &ter'";? – codeator
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
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
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. –
Kodlarımın, olası tüm SQL kombinasyonları üzerinde çalışmasını istiyorum. – codeator
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