Encontre um padrão para combinar 'a', ignorando que 'a', que se encontra dentro de 'b' e 'c'
Precisa de uma expressão composta para
" from" such that " from" is not within parenthesis
(ignorando aqueles que estão entre parênteses) aquia=" from"; b="("; and c=")";
O padrão mais próximo (mas inválido) que eu poderia escrever é
string pat = @"^((?!\(.* from.*\)).)* from((?!\(.* from.*\)).)*$";
minha expressão nega se algum "de" está presente entre parênteses, mas eu quero ignorar estritamente tal "de"
As correspondências devem ser encontradas em:
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
Strings não contendo correspondências: (Porque eu quero ignorar o "from" entre parênteses)
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: (não é necessário ler muito)
O link mais útil mais próximo à minha pergunta dizendo como combinar 'padrão', mas não 'regular' tem sido uma resposta por stanav em 31 de julho de 2009, 08:05 no seguinte link ...
http://www.vbforums.com/archive/index.php/t-578417.html
Além disso:Regex em C # que contém "this" mas não "that
Além disso:Expressão regular para corresponder a uma linha que não contém uma palavra?
Eu estudei / procurei cerca de uma semana, mas ainda é complexo para mim :)