vimscript – Uso del operador = ~

Pregunta:

Estoy un poco confundido con los operadores de comparación de expresiones regulares de VimScript.

Si miro a través de :h =~? tengo entendido que =~ se puede usar para hacer una coincidencia de expresiones regulares (con el ? haciéndolo insensible a mayúsculas y minúsculas).

Pero este código imprime "no":

let s:myVar = "S123"
if s:myVar =~? "^S\d+"
  echo "yes"
else
  echo "no"
endif

¿Estoy usando el operador =~ incorrectamente?

Respuesta:

Hay dos problemas:

  1. Necesitas \+ ya que no estás usando magia.
  2. Estás usando " lugar de ' . Necesitas doble escape \ : \\d , o usa comillas simples.

    Ver :h literal-string :

     literal-string literal-string E115 --------------- 'string' string constant expr-' Note that single quotes are used. This string is taken as it is. No backslashes are removed or have a special meaning. The only exception is that two quotes stand for one quote. Single quoted strings are useful for patterns, so that backslashes do not need to be doubled. These two commands are equivalent: if a =~ "\\s*" if a =~ '\s*'

Entonces:

let s:myVar = "S123"
if s:myVar =~? '^S\d\+'
  echo "yes"
else
  echo "no"
endif

Esto funciona como se esperaba.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım