NSRegularExpression省略某些字符

时间:2012-05-30 17:57:30

标签: iphone objective-c ios ipad nsregularexpression

所以我有以下正则表达式:

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

然而,这里的\ S还包括#和@。如何使这个正则表达式成为\ S但不包括#或@?

基本上我想要一个非空格字符,不包括#和@

3 个答案:

答案 0 :(得分:0)

要排除一组字符,你只需要在它之前添加^ ..这样做就像^(@ |#)

您可以使用以下内容: -

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

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

答案 1 :(得分:0)

试试(#|@)[^\s#@]+[^\s#@]将匹配除空格字符以外的所有内容,#和@。

请记住在放入objective-c字符串文字时双重转义。

答案 2 :(得分:0)

正如您最初提出此问题的other thread所述,

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

会做我认为你想要的。如果确实想要除#,@和空格之外的每个字符,那么

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

应该这样做。这两个都将采用你的字符串:

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

如果你使用matchesInString:options:range,它会给你:

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

如果这不是你想要的,你应该给我们输入字符串和你想要的输出,我们可以告诉你如何获得它。