que estoy haciendo un poco de gimnasia de expresiones regulares. Me propuse la tarea de intentar buscar el código C# donde hay un uso del operador as no seguido por un cheque nulo dentro de una cantidad de espacio razonable. Ahora no quiero analizar el código C#. P.ej. Quiero capturar fragmentos de código comoLas expresiones regulares búsqueda negativa hacia delante
var x1 = x as SimpleRes;
var y1 = y as SimpleRes;
if(x1.a == y1.a)
sin embargo, no capturar
var x1 = x as SimpleRes;
var y1 = y as SimpleRes;
if(x1 == null)
ni por supuesto
var x1 = x as SimpleRes;
var y1 = y as SimpleRes;
if(somethingunrelated == null) {...}
if(x1.a == y1.a)
Así, cualquier azar nulo cheque contará como un "buen cheque "y por lo tanto no encontrado.
La pregunta es: ¿Cómo hago coincidir algo mientras me aseguro de que no se encuentre algo más en su entorno?
he probado el enfoque ingenuo, en busca de 'como' a continuación, haciendo una búsqueda negativa hacia delante dentro de 150 caracteres.
\bas\b.{1,150}(?!\b==\s*null\b)
La expresión regular anterior coincide con todos los ejemplos anteriores infortunadamente. Mi instinto me dice, el problema es que el mirar hacia el futuro y luego hacer búsqueda negativa hacia delante puede encontrar muchas situaciones en las que la búsqueda hacia delante no encuentra el '== null'.
Si intento negando toda la expresión, entonces eso no ayuda tampoco, por lo que podría coincidir con la mayoría de código C# alrededor.
¿No puedes usar un analizador C# correcto? – Gumbo
Dije al principio "Estoy haciendo gimnasia de expresión regular. Me propuse la tarea de buscar C#" ... –
¿Es esto como ver fútbol y pensar "es como hacer gimnasia"? :-) – xanatos