Znajdź wzór pasujący do „a”, ignorując „a”, które leży w „b” i „c”

Potrzebujesz wyrażenia złożonego dla

" from" such that " from" is not within parenthesis

(ignorując te, które są w nawiasie) tutaja=" from"; b="("; and c=")";

Najbliższy (ale nieważny) wzór, który mogłem napisać, to

string pat = @"^((?!\(.* from.*\)).)* from((?!\(.* from.*\)).)*$";

moje wyrażenie zaprzecza, czy w nawiasie występuje „od”, ale chcę zignorować takie „od”


Mecze należy znaleźć w:

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

Ciągi nie zawierające dopasowań: (ponieważ chcę zignorować „od” w nawiasie)

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




Odpowiedni materiał: (mało potrzebne do czytania)

Najbardziej pomocne łącze bliższe mojemu pytaniu, jak dopasować „wzorzec”, ale nie „regularne”, zostało udzielone przez stanav w dniu 31 lipca 2009 r., 08:05 w następującym linku ...

http://www.vbforums.com/archive/index.php/t-578417.html

Również:Regex w C #, który zawiera „to” ale nie ”to

Również:Wyrażenie regularne pasujące do linii, która nie zawiera słowa?

Studiowałem / przeszukałem około tygodnia, ale nadal jest dla mnie złożony :)

questionAnswers(2)

yourAnswerToTheQuestion