iphone - 使用 NSRegularExpression 提取文本

标签 iphone regex ios pattern-matching text-extraction

给定一个 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/

相关文章:

javascript - 从 .SRT 文件中添加或减去秒数

regex - 如何在 Windows 上的 findstr 中指定空格?

ios - 控制 UICollectionViewController 中单元格之间的间隙

objective-c - UIDocumentInteractionController 向菜单添加自定义操作(例如电子邮件、保存到照片)

iphone - 使用图像创建图层时内存警告会导致崩溃

ios - 无法将类型 '(_) -> ()' 的值转换为预期的参数类型 '((Bool, Error?) -> Void)?'

iphone - 应用程序 "Ready for Sale"出现在应用商店,然后 2 小时后消失?

java - 正则表达式在 Java 中失败

ios - 如何在 iOS 中获取当前设备和当前平台?

iphone - Xcode malloc 错误