Configuración del complemento SublimeText2: Escape del signo de dólar para una expresión regular en la configuración del complemento DocBlockr

DocBlockr para SublimeText2 le permite declarar sus reglas de tipos de variables personalizadas en función del nombre de la variable.

Del README:

"jsdocs_notation_map": [{
  "regex": "tbl_?[Rr]ow", // any arbitrary regex to test against the var name
  "type": "TableRow"      // you can add your own types
}]

Quiero capturar variables que comienzan con el $ personaje

ejemplo:

"jsdocs_notation_map": [{
  "regex": "^[$].+",      // any word that starts with $
  "type": "HTMLElement"   // That is its type
}]

De manera que la $header será capturado de la expresión regular anterior.

Desafortunadamente lo anterior no funciona. El plugin no reconocerá mi $header variable como un "HTMLElement".

He probado las siguientes cadenas de expresiones regulares:

  • $ - Coincide con todo, incluso nombres de variables sin $ dentro de ellos.
  • \\$
  • \\\\$
  • $$
  • \\$$
  • \\\\$$
  • [$]
  • [\\$]

Nota al margen: el editor no me permite insertar números impares de \.

Todos ellos no coinciden con nada, excepto el primero que coincide con todo.

Esta no es una pregunta RegEx. Los RegExs que deberían funcionar, (Por ejemplo, ^[$].+) simplemente no funcionan debido al carácter $. Creo que tiene que ver con el mecanismo de configuración del complemento y cómo el mecanismo de análisis de Python usa $.

Nota al margen: El "^[.].+" RegEx funciona como se esperaba.

Cualquier ayuda es bienvenida

PD: si alguien puede ser de ayuda, me gustaría el "^" al comienzo de la cadena de expresiones regulares. No creo que no funcione desde el primer momento, pero si no es así, comparta el conocimiento sobre eso también.

preguntado el 12 de junio de 12 a las 13:06

Edité sus expresiones regulares para que fueran código en línea; no estoy seguro de cuántas barras invertidas quería mostrar originalmente, ya que SO estaba eliminando algunas. Es posible que desee volver a verificar que sean como pretendía. -

4 Respuestas

Oh, oye... entonces lo que hace el complemento es eliminar cualquier $ or _ del nombre de la variable/función y luego aplique la expresión regular. Esto se añadió para que _foo $foo y foo todos podrían reconocerse con la misma expresión regular, ya que en ese momento no pensé en que esos caracteres tuvieran un significado especial. Parece que en realidad es una falla completa al final. Parece que has pasado un poco de tiempo pirateándolo, lo siento.

He lo agregó al rastreador de problemas ahora. En el futuro, esa también sería una buena manera de llamar mi atención :)

Respondido 05 ago 12, 23:08

Esto ha sido arreglado y desplegado ahora. Avísame si hay algún problema. - apodo

$ es el final de la línea, por lo que puede intentar ponerlo entre corchetes como un intento alternativo de escapar... así que algo así como [$][^\s]+

Respondido el 12 de junio de 12 a las 13:06

"\\$" Deberia trabajar. La primera \ escapa el segundo para su uso en JSON. Esto luego produce la expresión regular \$, que coincide con un dólar literal.

Respondido el 12 de junio de 12 a las 15:06

"^[$].*"

La ^ fuerza un partido contra el comienzo de la línea. El [] aquí sirven para escapar de la $ (es más fácil que averiguar cuántas capas de barras invertidas necesita), y el +* coincide con todo lo que sigue. Podrías reemplazar el .* con [a-zA-Z0-9_]+ si desea hacer coincidir uno o más caracteres alfanuméricos/guiones bajos.

Respondido el 13 de junio de 12 a las 13:06

^ es el comienzo de la línea \^ es el comienzo de la cadena. - Juan Sobolewski

En general sí, editaré para que quede más claro. En este caso matched = re.search(rule['regex'], name) aquí el comienzo de la cadena is el comienzo de la línea. v = "$my_variable"; re.search("^[$].*", v) devolver un partido. (Supongo que, en el código vinculado anteriormente, name se refiere a un token y no a una línea completa de texto.) - bstpierre

Entiendo lo anterior. Desafortunadamente, si la expresión regular tiene el signo $, no funcionará como se esperaba, ya que se usa dentro del archivo de configuración del complemento. - basiloungas

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.