es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Extrayendo caracteres entre comillas dobles

En mi proyecto, necesito extraer algunos parámetros de un archivo de configuración.
A continuación se muestra una sección de la línea que estoy leyendo, el parámetro que necesito extraer es el Prefijo del Programa.

...  ProgramPrefix="" ReceiveTimeout="80000" ...

Necesito extraer lo que está entre las comillas dobles para ProgramPrefix. El problema es que entre estas comillas puede haber cualquier carácter alfanumérico, símbolo, espacio, o ningún carácter en absoluto.

A continuación se muestra mi solución actual para extraer cualquier carácter antes de la segunda comilla doble, el problema es que no funciona para el caso de que haya algo entre las comillas dobles.

    EOPdefL = string.find(line,"ProgramPostfix=")
    EOPdef = string.match(line,'([^"]+)',EOPdefL+16)

Cuando no hay nada entre las comillas dobles, la salida para EOPdef es:

EOPdef = ReceiveTimeout=

Me gustaría que EOPdef simplemente devuelva una cadena vacía si no hay caracteres.

EOPdef = ""

EDITAR: lhf y Piglet proporcionaron una solución funcional. La clase de caracteres para capturar 0 o más caracteres entre comillas dobles es la siguiente:

'"(.-)"'

Implementar esta clase de caracteres en mi solución resulta en el siguiente código:

SOPdefL = string.find(line,"ProgramPrefix=")
SOPdef = string.match(line,'"(.-)"',SOPdefL+14)
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para extraer el parámetro de Prefijo de Programa desde el archivo de configuración, puedes usar la biblioteca de cadenas de caracteres de lua y la función de coincidencia de patrones. Dado que el contenido entre las comillas dobles puede ser cualquier carácter, incluyendo espacios, símbolos y caracteres alfanuméricos, necesitas un patrón que capture cualquier carácter dentro de las comillas dobles.

    Una forma de capturar cualquier carácter entre comillas dobles es usando el siguiente patrón: ‘”(.-)”‘. Este patrón captura cualquier carácter entre la primera aparición de ‘”‘ y la siguiente aparición de ‘”‘. El modificador ‘-‘ entre los paréntesis captura 0 o más apariciones de lo que sea que esté entre las comillas.

    A continuación se muestra una solución actualizada que captura correctamente el parámetro de Prefijo de Programa, incluso cuando no hay caracteres entre las comillas:

    -- suponiendo que la variable line contiene la cadena de entrada
    local programPrefix = ''
    local prefixIndex = string.find(line, 'ProgramPrefix="')
    if prefixIndex then
        programPrefix = string.match(line, '"(.-)"', prefixIndex)
    end
    -- programPrefix debería contener ahora el valor extraído o ser una cadena vacía si no se encontró ninguno
    

    Esta solución actualizada debería extraer correctamente el parámetro de Prefijo de Programa y funcionar para cualquier carácter entre las comillas, incluyendo espacios o ningún carácter en absoluto.

Comments are closed.