É verdade. Eu estava usando o [] porque preciso na verdade “negar” os operadores. Ou seja, na primeira posição da string, eu quero que tudo seja valido, menos um desses operadores.
Logo, estava usando: [^\||<|>|2>]$
como eu faria essa negação usando ()?
B
bezier_curve
A negação é mais complicada que parece. Procure por “negative lookbehind”.
quando vc usa [ e ] vc esta falando que quer um caracter (1) que esteja dentro destes limites (ou fora, se vc negar). Mas isto vale para um caracter.
Vc quer reconhecer pipes ou redirecionadores. Beleza. 2> é um identificador complexo, pois é seguido de um 2 e de um > – identificando o redirecionamento do descriptor 2 que geralmente é a STDERR.
Eu tentaria identificar um > que pode ser precedido por um numero, pois 1> é valido, assim como 3> , 999> – basta vc criar um descriptor destes.
e o < também pode ser precedido de um numero.
Eu encadearia IFs para encontrar estes caras se fosse usar REGEXP. Ou tentaria descrever uma gramatica e usar um parser que sabe lidar com gramatica BNF – deve ter uma versão do ANTLR para ansi C.