2012-05-30 1 views
0

donc j'ai eu l'expression rationnelle suivante:NSRegularExpression omettant certain caractère

@"(#|@)\\S+" 

mais le \ S ici inclut # et @ ainsi. Comment est-ce que je fais cette regex pour que ce soit \ S mais n'incluant pas # ou @?

Fondamentalement, je veux un espace non blanc sauf # et @

Répondre

0

Essayez (#|@)[^\s#@]+. [^\s#@] correspondra à tout sauf les caractères espace, # et @.

Et n'oubliez pas de double échappement \ mis dans le littéral objectif-c chaîne.

+0

Je l'ai essayé et ça ne fonctionne pas – adit

+0

Désolé, il y avait une faute de frappe (un extra |) . Essayez maintenant. –

0

Pour exclure un ensemble de caractères u ont simplement ajouter^avant it..so le faire comme^(@ | #)

vous pouvez utiliser les éléments suivants: -

NSStirng *[email protected]"Your String"; 
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(@|#|\s)" options:NSRegularExpressionCaseInsensitive error:&error]; 

NSString *modifiedString = [regex stringByReplacingMatchesInString:string options:0 
range:NSMakeRange(0, [string length]) withTemplate:@""]; 
+0

donc c'est @ "(# | @)^(@ | #) \\ S +" ?? – adit

+0

basé sur les docs ici http://developer.apple.com/library/mac/#documentation/Foundation/Reference/NSRegularExpression_Class/Reference/Reference.html^signifie que correspond au début de la ligne – adit

+0

question éditée vous pouvez voir la réponse –

0

Comme il est indiqué sur le other thread où vous avez demandé à l'origine cette question,

@"(#|@)\\w+" 

fera ce que je pense que vous voulez. Si vous voulez vraiment tous les caractères sauf #, @, et les espaces, puis

@"[#@][^@#\\s]+" 

devrait le faire. Ces deux prendra votre chaîne:

@"@[email protected]#red#blue #[email protected]#dog" 

et si vous utilisez matchesInString:options:range il vous donne:

@"@baz" 
@"@marroon" 
@"#red" 
@"#blue" 
@"#big" 
@"@cat" 
@"#dog" 

Si ce n'est pas ce que vous voulez, vous devez nous donner la chaîne d'entrée et ce que vous voulez comme sortie, et nous pouvons vous dire comment l'obtenir.