J'ai du mal à faire fonctionner mon expression régulière. J'écris une application qui fait du balisage dans la section des commentaires, donc à chaque fois qu'il y a un symbole @, je dois regarder le texte suivant pour en faire un lien. C'est à dire. ce que font Instagram et Twitter. Ci-dessous est mon expression régulière, j'ai besoin d'obtenir toutes les occurrences de l'expression régulière qui correspond à ces critères: @ suivi de tout caractère alphanumérique et se termine quand il arrive à un espace ou un autre symbole @.Expression textuelle iOS correspondant aux caractères non blancs jusqu'au premier caractère non-mot après le symbole @
NSString *searchedString = cellComment.commentText;
NSRange searchedRange = NSMakeRange(0, [searchedString length]);
NSString *pattern = @"@.+[^\s]";
NSError *error = nil;
NSRegularExpression* regex = [NSRegularExpression regularExpressionWithPattern: pattern options:0 error:&error];
NSArray* matches = [regex matchesInString:searchedString options:0 range: searchedRange];
for (NSTextCheckingResult* match in matches) {
NSString* matchText = [searchedString substringWithRange:[match range]];
for(int i = 0; i< match.numberOfRanges;i++)
{
NSRange group1 = [match rangeAtIndex:i];
NSLog(@"group1: %@%lu", [searchedString substringWithRange:group1],group1.location);
}
}
Essayez '@ "@ \\ S +"'. Ou '@" @ \\ S + \\ b "'. Pour Twitter, '@ \\ w +' devrait faire l'affaire. –
Vous devriez revenir à la version post où vous avez montré votre regex. –
Je suis revenu à la première version parce que sinon, il sonnera comme un doublon de [* Regex pour trouver des mots qui commencent par un caractère spécifique *] (http://stackoverflow.com/questions/2678666/regex-to-find- mots-que-commencer-avec-un-caractère-spécifique). Le problème n'est pas que OP ne connaisse pas le modèle pour un '@' + quelque chose mais l'utilisation de classes de caractères abrégés et un moyen de faire correspondre des caractères non-blancs jusqu'au premier caractère non-mot. –