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