Encuentra un patrón que coincida con 'a', ignorando que 'a' que se encuentra dentro de 'b' y 'c'

Necesita una expresión compuesta para

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

(ignorando los que están entre paréntesis) aquía=" from"; b="("; and c=")";

El patrón más cercano (pero no válido) que podría escribir es

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

mi expresión niega si alguna "de" está presente entre paréntesis, pero quiero ignorar estrictamente "de"


Los partidos deben encontrarse en:

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

Cadenas que no contienen coincidencias: (porque quiero ignorar el "desde" entre paréntesis)

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




Material relevante: (no es necesario leer mucho)

El enlace más útil que se encuentra más cerca de mi pregunta que dice cómo coincidir con 'patrón' pero no 'regular' ha sido una respuesta de stanav el 31 de julio de 2009, a las 08:05 a.m. en el siguiente enlace ...

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

También:Regex en C # que contiene "esto" pero no "que

También:¿Expresión regular para hacer coincidir una línea que no contiene una palabra?

He estudiado / buscado aproximadamente una semana, pero aún así es complejo para mí :)

Respuestas a la pregunta(2)

Su respuesta a la pregunta