0

我还没有在objective-c中使用过正则表达式。我现在要做的是评估一个字符串,看看它是否包含 4 个或 5 个字符的重复模式——任何模式都没有关系。例如,字符串 like@"testA54RqA54Rq"会从正则表达式返回一个真值,而字符串 like@"testA54Rq"不会。现在我只是生成所有可能的 4 和 5 个字符的子字符串并将它们相互匹配,但显然这是非常低效的。我在哪里可以找到一些关于如何开始在 Objective C 中使用正则表达式的资源?如果有人在一个小例子之前遇到过这种情况,那就太好了。

-编辑-

我也想有类似@"testQWEr30BKRe40"return true 的东西(4个字母后跟2个数字的模式)。我不确定这是否可能。

4

2 回答 2

2

你可能想看看:

https://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSRegularExpression_Class/Reference/Reference.html

我相信实际的正则表达式只是:(\\w{4,5})\\1


NSString *regexStr = @"(\\w{4,5})\\1"; 
NSError *error = nil; 
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regexStr options:0 error:&error]; 
if ((regex==nil) && (error!=nil)) {
  warn( @"Regex failed for: %@, error was: %@", string, error); 
} else {

}
于 2012-06-29T17:27:51.740 回答
1

对于确切的模式,您将能够使用正则表达式进行此类验证(.{4,5})\\1

如果你想做类别模式,比如 4 个字母后跟 2 个数字,那么你必须:

  1. 用一个不变的字母替换所有字母(例如替换[a-zA-Z]X
  2. 用一个常数替换所有数字(例如替换\\d0
  3. 使用与上所示相同的正则表达式验证此类修改后的输入
于 2012-06-29T18:58:07.370 回答