¿Hay un operador NOT en Regexes? Como en esa cadena:"(2001) (asdf) (dasd1123_asd 21.01.2011 zqge)(dzqge) name (20019)"
Quiero borrar todo \([0-9a-zA-z _\.\-:]*\), pero no aquel en el que se trata de un año: (2001).
Entonces, ¿la expresión regular debe devolver debe ser: (2001) name.
NOTA: algo como \((?![\d]){4}[0-9a-zA-z _\.\-:]*\)no funciona para mí (de (20019)alguna manera también coincide ...)

(2001) name.Respuestas:
No, no hay un operador no directo. Al menos no de la forma que esperas.
Sin embargo, puede usar una anticipación negativa de ancho cero:
La
(?!...)parte significa "sólo coincide si el texto que sigue (por lo tanto: anticipado) no coincide (por lo tanto: negativo). Pero en realidad no consume los caracteres que coincide (por lo tanto: ancho cero).En realidad, hay 4 combinaciones de alternativas con 2 ejes:
fuente
\((?![\d]{4})[0-9a-zA-z _\.\-:]+\)todavía hay(20019)en él{4}exterior del lookahead y en este comentario lo pones dentro : ¿cuál probaste? Además: si desea(20019)hacer coincidir, debe agregar el\)interior de su lookahead:\((?![\d]{4}\))[0-9a-zA-z _\.\-:]+\)\((?![\d]{4} -->\)<--)[0-9a-zA-z _\.\-:]+\)Entonces hay un corchete no cerrado, ¿no?)porque quiero hacer coincidir el carácter literal)(¡tal como lo hace al principio y al final de su expresión regular!). Luego, después de igualar eso, finalizo la búsqueda anticipada usando un archivo).No del todo, aunque generalmente puede utilizar alguna solución en uno de los formularios
[^abc], que es carácter por carácter noaoboc,a(?!b)queano va seguido deb(?<!a)bquebno está precedido porafuente
[^abc]debería significar noaoboc, no "no la cadenaabc".