给定一个 NSString *test = @"...href="/functions?q=KEYWORD\x26amp...";
如何使用 NSRegularExpression 从字符串中提取单词 KEYWORD?
我在 iOS SDK 4.2 上尝试使用以下 NSRegularExpression,但找不到文本。下面的代码看起来没问题吗?
NSRegularExpression *testRegex = [NSRegularExpression regularExpressionWithPattern:@"(?<=href=\"\\/functions\\?q=).+?(?=\\x26amp])" options:0 error:nil];
NSRange result = [testRegex rangeOfFirstMatchInString:test options:0 range:NSMakeRange(0, [test length])];
最佳答案
您的正则表达式中有一个杂散的“]”,就在结束之前,这可能会导致问题。您还需要使用四个斜杠来匹配输入字符串中的一个斜杠。 (将其加倍以在 C 字符串中将其转义,然后再次加倍以将其在正则表达式中转义)。我建议两件事。首先,在错误参数中传递一些东西,然后在调试器中查看它。其次,我不太喜欢前瞻/后视表达式。我认为这种风格更具可读性:
NSString *regexStr = @"href=\"\\/functions\\?=(.+?)\\\\x26amp";
NSError *error;
NSRegularExpression *testRegex = [NSRegularExpression regularExpressionWithPattern:regexStr options:0 error:&error];
if( testRegex == nil ) NSLog( @"Error making regex: %@", error );
NSTextCheckingResult *result = [testRegex firstMatchInString:test options:0 range:NSMakeRange(0, [test length])];
NSRange range = [result rangeAtIndex:1];
关于iphone - 使用 NSRegularExpression 提取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4699955/