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?
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.