Estos son los datos de entrada:Adición de un solo carácter a mi .NET RegEx hace que se cuelgue
*** INVOICE ***
THE BIKE SHOP
1 NEW ROAD, TOWNVILLE,
SOMEWHERE, UK, AB1 2CD
TEL-567890
To: COUNTER SALE No: 243529 Page: 1
Date: 04/06/10 12:00
Ref: Aiden
Cust No: 010000
Aquí es una expresión regular que funciona (Opciones: SingleLine, ignoreWhitespace, compilado) - de que coincide inmediatamente y el grupos estén correctamente pobladas:
\W+INVOICE\W+
(?<shopAddr>.*?)\W+
To:\W+(?<custAddr>.*?)\W+
No:\W+(?<invNo>\d+).*?
Date:\W+(?<invDate>[0-9/ :]+)\W+
Ref:\W+(?<ref>[\w ]*?)\W+
Cust
tan pronto como agrego la 'N' de Cust No en el rex, analizar la entrada cuelga siempre:
\W+INVOICE\W+
(?<shopAddr>.*?)\W+
To:\W+(?<custAddr>.*?)\W+
No:\W+(?<invNo>\d+).*?
Date:\W+(?<invDate>[0-9/ :]+)\W+
Ref:\W+(?<ref>[\w ]*?)\W+
Cust N
Si añado algo así como "cualquier carácter":
\W+INVOICE\W+
(?<shopAddr>.*?)\W+
To:\W+(?<custAddr>.*?)\W+
No:\W+(?<invNo>\d+).*?
Date:\W+(?<invDate>[0-9/ :]+)\W+
Ref:\W+(?<ref>[\w ]*?)\W+
Cust .
Funciona, pero tan pronto como agrego un carácter fijo, el rex se bloquea de nuevo:
\W+INVOICE\W+
(?<shopAddr>.*?)\W+
To:\W+(?<custAddr>.*?)\W+
No:\W+(?<invNo>\d+).*?
Date:\W+(?<invDate>[0-9/ :]+)\W+
Ref:\W+(?<ref>[\w ]*?)\W+
Cust ..:
¿Puede cualquier persona aconsejar qué añadir algo ¿tan trivial haría que se caiga? ¿Puedo habilitar algún tipo de rastreo para ver la actividad de coincidencia para ver si se está atascando en un retroceso catastrófico?
Lol repro'd. Raro. – Will
Nota: Ni siquiera pude conseguir que el RegEx coincida si utilizo esto como un patrón: No, no, literalmente, solo las palabras "Cust No" no se pueden encontrar en la entrada. He hexeditado el archivo para ver si había algo raro, pero es simplemente ASCII. ¿Alguien más puede poner esos datos como entrada, e incluso igualar simplemente a "Cust No" como un patrón? – Matt
También observo que no cuelga si no confío en la palabra "Cust" y simplemente cambio las últimas líneas de la expresión regular a: Ref: \ W + (? [\ w] *?). *? No: – Matt