我试图在textview字符串中搜索几个字符串。我试图通过正则表达式找到一些表情符号。我做了,
@"(:D|:))
但这不适用于@"(:D)
。它与:D, :), :(, :*
配合得很好。为什么以及如何检查addEventListener("click", change, false);
addEventListener("mouseleave", normal, false);
等字符串?
答案 0 :(得分:2)
)
是一个特殊字符,您需要使用反斜杠在REGEX模式中将其转义。
正确转义的REGEX模式如下所示:(:D|:\))
。但是在Objective-C中,\)
是不够的,因为反斜杠本身是一个逃避其他角色的特殊字符。因此模式字符串必须是"双重转义"带有2个反冲:逃脱特殊的逃脱角色。
所以在Objective-C中,你必须使用这种模式:@"(:D|:\\))"
您可以在此处进行测试:https://regex101.com/r/jB1yL8/1
答案 1 :(得分:1)
您可能会注意到Objective C中的特殊正则表达式元字符,如.
,)
,(
,[
,]
,+
, ?
,\\
,$
,^
,*
,{
和}
必须使用双反斜杠转义或放入进入角色类[...]
:
NSMutableString *searchedString = [NSMutableString stringWithString:@":D and :)"];
NSError* error = nil;
NSRegularExpression* regex = [NSRegularExpression regularExpressionWithPattern:@"(:D|:\\))" options:0 error:&error];
NSArray* matches = [regex matchesInString:searchedString options:0 range:NSMakeRange(0, [searchedString length])];
for ( NSTextCheckingResult* match in matches )
{
NSString* matchText = [searchedString substringWithRange:[match range]];
NSLog(@"match: %@", matchText);
}
return 0;
输出:
2016-02-02 01:47:03.723 prog[2261] match: :D
2016-02-02 01:47:03.723 prog[2261] match: :)
请参阅demo