objective-c ios regex nsregularexpression

objective c - iOS Regex: secuencia de escape desconocida "/ |"



objective-c nsregularexpression (2)

Recibo una advertencia extraña y, como resultado, mi búsqueda de expresiones regulares no funciona. Aquí está la línea:

NSRange r = [HTML rangeOfString:@"/|(.*)/|" options:NSRegularExpressionSearch];

Donde HTML es una cadena que estoy seguro que contiene una sola coincidencia para la expresión regular anterior.

La advertencia es solo en la primera aparición de "/ |", no en ambos.

¡Cualquier ayuda es muy apreciada!


Estás recibiendo la advertencia porque /| no es una secuencia de escape válida en Objective-C (o C o C ++ para esa materia). El compilador está ignorando eso y solo está usando un raw | en su lugar, así que la cadena que está pasando es @"|(.*)|" .

Para obtener el comportamiento que desea, debe escapar de la barra invertida en su código fuente para que el motor de expresiones regulares vea la barra invertida literal e interprete la | carácter como literal en lugar de como alternancia, por ejemplo, @"//|(.*)//|" .


Solo para agregar, si estás tratando con secuencias de caracteres especiales en formato Unicode, puedes usar algo como esto:

const unichar specialCharSequence=''some special character''; if(specialCharSequence==L''/uxxxx'') { //handle the occurence of this special character }