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.

NSRegularExpression (.*) cualquier carácter simple cero o más veces no funciona

Mi regex que se usará con fines de linting de código debe encontrar definiciones de funciones que tengan la primera línea vacía.

Aquí está mi cadena:

let text = """
override func withFirstLineEmpty(_ animated: Bool) {

    print()
}

override func withNoFirstLineEmpty(_ animated: Bool) {
    print()
}
"""

Este es mi regex que fue probado con el sitio web regex101: func.*{\n\n.

Este es mi código:

let regexString = "func.*{\n\n"
let regexEscaped = NSRegularExpression.escapedPattern(for: regexString)
let regex = try! NSRegularExpression(pattern: regexEscaped, options: [.useUnixLineSeparators, .dotMatchesLineSeparators])
let matches = regex.matches(in: text, options: [], range: NSRange(text)!)

La matriz de resultados de coincidencias está vacía.

¿Es este un problema de mi regex o de la configuración de NSRegularExpression?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Basándonos en el código y en la expresión regular proporcionada, parece que el patrón de la expresión regular es correcto y debería ser capaz de encontrar definiciones de funciones con la primera línea vacía. Por lo tanto, podría tratarse de un problema con la configuración de NSRegularExpression.

    Un posible problema podría ser que el parámetro de rango en regex.matches(in: text, options: [], range: NSRange(text)!) no esté configurado correctamente. El rango debe establecerse en toda la cadena, incluyendo las líneas vacías al principio y al final de la cadena.

    Otro problema podría ser el uso de NSRegularExpression.escapedPattern(for:), que podría cambiar el patrón previsto. Es mejor comprobar si el patrón de escape resultante sigue siendo el mismo que el patrón de la expresión regular original.

    Por último, es posible que el patrón de la expresión regular necesite ser modificado para incluir caracteres adicionales de espacio en blanco, como \r o \t, dependiendo del formato de la cadena de entrada.

Comments are closed.