Finden Sie ein Muster, das mit 'a' übereinstimmt, und ignorieren Sie das 'a', das in 'b' und 'c' liegt.
Benötigen Sie einen zusammengesetzten Ausdruck für
" from" such that " from" is not within parenthesis
(Ignorieren der in Klammern stehenden) hiera=" from"; b="("; and c=")";
Das nächste (aber ungültige) Muster, das ich schreiben könnte, ist
string pat = @"^((?!\(.* from.*\)).)* from((?!\(.* from.*\)).)*$";
Mein Ausdruck verweigert, ob ein "von" in Klammern steht, aber ich möchte ein solches "von" strikt ignorieren.
Übereinstimmungen sollten gefunden werden in:
1: " from" 2:select field1 from t1 (select field1 from t1) ---- 1 time in both
3: select field1 from t1 (select field1 from t1)select field1 from t1 ---2 times
Zeichenfolgen, die keine Übereinstimmungen enthalten: (Da ich das "Von" in Klammern ignorieren möchte)
1: select field1 no_f_rom_OutOf_Parenthesis t1 (select field1 from t1)
2: (select field1 from t1) 3: "" (Empty String) 4. No word as form
0 times in all four strings
Relevantes Material: (nicht viel zu lesen)
Der hilfreichste Link, der meiner Frage näher kommt, wie man "Muster", aber nicht "normal" zuordnen kann, war eine Antwort von stanav am 31. Juli 2009, 08:05 Uhr in folgendem Link ...
http://www.vbforums.com/archive/index.php/t-578417.html
Ebenfalls:Regex in C #, das "dies" enthält, aber nicht "das"
Ebenfalls:Regulärer Ausdruck für eine Zeile, die kein Wort enthält?
Ich habe ungefähr eine Woche lang studiert / gesucht, aber es ist immer noch komplex für mich :)