gpt4 book ai didi

objective-c - 如何枚举 RegexKit 中的所有命名捕获?

转载 作者:行者123 更新时间:2023-12-03 18:03:35 25 4
gpt4 key购买 nike

我最近想在 Cocoa 应用程序中使用正则表达式。但我发现 Cocoa 不包含正则表达式类。所以我决定使用RegexKit(OgreKit很好,但我不知道为什么它在我的OSX 10.6.4 x86_64上运行得不好)。

我的文件内容如下:

12:20:30 - 01:20:30some text11:20:30 - 04:20:30some text

And I want to pick up all time values and text values.I found this example code in a guide:

NSString *entireMatchString = NULL, *totalString = NULL, *dollarsString = NULL, *centsString = NULL;
NSString *regexString = @"owe:\\s*\\$?(?<total>(?<dollars>\\d+)\\.(?<cents>\\d+))";

[@"You owe: 1234.56 (tip not included)" getCapturesWithRegexAndReferences:regexString,@"$0", &entireString,@"${total}", &totalString,@"${dollars}", &dollarsString,@"${cents}",&centsString,nil];

// entireString = @"owe: 1234.56";
// totalString = @"1234.56";
// dollarsString = @"1234";
// centsString = @"56";

所以我写了一个正则表达式字符串

NSString *regexString = @"\\s*\\n*(?<start>\\d\\d:\\d\\d:\\d\\d*)\\s*-\\s*(?<end>\\d\\d:\\d\\d:\\d\\d*)\\s*\\n*(?<text>.*)

它工作得很好,但只能工作一次。我需要获取所有命名的捕获,就像我们在 Ogrekit 中所做的那样,例如:

OGRegularExpression *regex = [OGRegularExpression regularExpressionWithString:@"<video src=\"(?<imageURL>.+)\".+>"
options:OgreCaptureGroupOption
syntax:OgreRubySyntax
escapeCharacter:OgreBackslashCharacter];

NSArray *matches = [regex allMatchesInString:@"<video src=\"http://test.com/hello.jpg\">"];

if (matches != nil && ([matches count] == 1))
{
OGRegularExpressionMatch *match = [matches objectAtIndex: 0];
NSString *result = [match substringNamed:@"ImageURL"];
// : http://test.com/hello.jpg
}

从匹配数组中查找所有命名的捕获值很容易。有人知道在 RegexKit 中该怎么做吗?谢谢。

最佳答案

查看 Enumerating all the Matches in a String by a Regular Expression 下的文档。具体来说,您想了解 RKEnumerator类(class)。

关于objective-c - 如何枚举 RegexKit 中的所有命名捕获?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4133443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com