[英]iOS - NSString regex match
我有一个字符串例如:
NSString *str = @"Strängnäs"
然后我使用一个方法用*
替换斯堪的纳维亚字母,所以它将是:
NSString *strReplaced = @"Str*ngn*s"
我需要一个函数来匹配str
与strReplaced
。 换句话说, *
应该被视为任何字符( *
应该与任何字符匹配)。
我怎样才能做到这一点?
Strängnäs should be equal to Str*ngn*s
编辑:
也许我不够清楚。 我希望*
被视为任何角色。 所以当做[@"Strängnäs" isEqualToString:@"Str*ngn*s"]
它应该返回YES
我认为以下正则表达式模式将匹配所有非ASCII文本,考虑到斯堪的纳维亚字母不是ASCII:
[^ -~]
分别处理每一行以避免匹配换行符并将匹配替换为*。
演示: https : //regex101.com/r/dI6zN5/1
编辑:
这是基于上述模式的优化模式:
[^\000-~]
演示: https : //regex101.com/r/lO0bE9/1
编辑1:根据您的评论,您需要一个UDF(用户定义的函数):
True
,否则返回false。 然后,您可以像CompareString(ScanStr,AsteriskStr)
一样使用UDF。
我使用JLILI Amen发布的正则表达式创建了一个代码示例
NSString *string = @"Strängnäs";
NSError *error = nil;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[^ -~]" options:NSRegularExpressionCaseInsensitive error:&error];
NSString *modifiedString = [regex stringByReplacingMatchesInString:string options:0 range:NSMakeRange(0, [string length]) withTemplate:@"*"];
NSLog(@"%@", modifiedString);
Str*ngn*s
不确定你到底是什么,但也许这会有所帮助。
匹配任何东西的正则表达式模式是.
(点),所以你可以用strReplaced
替换*
来创建一个模式.
的:
NSString *pattern = [strReplaced stringByReplacingOccurencesOfString:@"*" withString:"."];
现在使用NSRegularExpression
您可以从pattern
构造一个正则表达式,然后查看str
匹配它 - 请参阅所需方法的文档 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.