use v5.34; $_ = "# name = 'epii1/tagbar-markdown'"; if(/name(?<!#\s{0,20})\s*=\s*'.*'/) { print "$_\n"; } Quiero hacer coincidir las cadenas que contienen name = '.*' y no están comentadas. Por ejemplo, name = 'tpope/vim-scriptease' debe coincidir y # name = 'epii1/tagbar-markdown' no. Uso una afirmación negativa de ancho cero, no positiva. Sé que el patrón correcto debería ser (?<!#\s{0,20})name\s*=\s*'.*' . Solo quiero intentarlo y creo que el patrón en el bloque de código es incorrecto, y la cadena dada coincidiría. Sin embargo, no se imprime nada (excepto la advertencia sobre la búsqueda de longitud variable), por lo que perl juzga que no coincide. Luego escribo en javascript:
let text = "# name = 'epii1/tagbar-markdown'"; let pattern = /name(?<!#\s{0,20})\s*=\s*'.*'/; let result = pattern.test(text); console.log(result); result da true . Entonces, ¿es esto un error de Perl?