Usar expresiones regulares en findstr

Estoy tratando de implementar un script hook en Subversion, usando findstr con una expresión regular. El objective es hacer que se incluya una input en el post de logging que coincida con el formatting utilizado por nuestra herramienta de seguimiento de problemas (Atlassian JIRA). Cada uno de nuestros problemas consta de 4 a 6 letras mayúsculas y 2 a 4 numbers, separados por un guión (por ejemplo, "TEST-554" o CMMGT-392 "). De acuerdo con las instrucciones en la documentation de Subversion, he creado un file por lotes para compruebe el post de logging para una input con el formatting correcto, utilizando la expresión regular

findstr ([AZ]{3,6}\-[0-9]{2,4}) > nul

Probé la expresión regular en varias herramientas de testing y parece funcionar, pero cuando la ejecuto como parte de la secuencia de commands de enlace, no puede devolver una coincidencia. Como una especie de "control", traté de usar la expresión regular

findstr ...... > nul

y fue capaz de encontrar un partido. ¿Alguien ve dónde me estoy equivocando?

findstr requiere la opción /R para usar expresiones regulares, pero no admite expresiones regulares extendidas, por lo que cosas como conteos ( {3,6} ) no funcionan. Además, las coincidencias de cero o uno ( ? ) No funcionan, por lo que hacer lo que quiera se volverá bastante detallado. Además, la intercalación de Windows en inglés significa que [AZ] coincide con 'A', 'b', 'B', 'z' y 'Z', pero no con 'a'. Aquí hay algo que podría funcionar:

 findstr /R "[ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ]-[0-9][0-9] [ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ]-[0-9][0-9][0-9] [ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ]-[0-9][0-9][0-9][0-9] [ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ]-[0-9][0-9] [ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ]-[0-9][0-9][0-9] [ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ]-[0-9][0-9][0-9][0-9] [ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ]-[0-9][0-9] [ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ]-[0-9][0-9][0-9] [ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ]-[0-9][0-9][0-9][0-9] [ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ]-[0-9][0-9] [ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ]-[0-9][0-9][0-9] [ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ]-[0-9][0-9][0-9][0-9]" 

Este command increíblemente detallado puede exceder la longitud máxima de command del intérprete de commands (no se ha marcado), pero básicamente hace lo que se desea al contener una coincidencia por separado para cada una de las permutaciones de recuentos de letras y numbers. Esa es otra cosa extraña sobre findstr : a less que uses la opción /C , los espacios en tu cadena de coincidencia se usarán para separarla en expresiones de coincidencia individuales.

Si tiene alguna opción además de findstr como PowerShell, Python o incluso VBScript, le sugiero que la use. ¡Buena suerte!

EDITAR: Aquí está el one-liner de Perl que utilicé para generar el command anterior:

 perl -le 'BEGIN{$\=" "}for $x (3..6){for $y (2..4){print join("","[",A..Z,"]") x $x, "-", "[0-9]" x $y}}'