gpt4 book ai didi

ios - 了解如何正确使用 NSRegularExpressions

转载 作者:行者123 更新时间:2023-11-29 02:23:19 27 4
gpt4 key购买 nike

我正在尝试编写一个函数,它有一个 NSString 并解析它返回一个标签数组。

标签的定义是任何以# 开头并且在# 之后仅包含字母数字字符的 nsstring 文本。

这是正确的吗?

#.*?[A-Za-z0-9]

我想使用 matchesInString:options:range: 但需要一些帮助。

我的职能是:

- (void) getTags
{
NSString* str = @"This is my string and a couple of #tags for #you.";

// Range is 0 to 48 (full length of string)

// NSArray should contain #tags and #you only.

谢谢!

最佳答案

模式 "#.*?[A-Za-z0-9]" 匹配后跟零个或多个的 #集合[A-Za-z0-9]中的字符。你可能想要的是

NSString *pattern = @"#[A-Za-z0-9]+";

您可以使用该模式创建正则表达式:

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:nil];

并枚举字符串中的所有匹配项:

NSString *string = @"abc #tag1 def #tag2.";
NSMutableArray *tags = [NSMutableArray array];

[regex enumerateMatchesInString:string options:0 range:NSMakeRange(0, string.length)
usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
NSRange range = [result range];
NSString *tag = [string substringWithRange:range];
[tags addObject:tag];
}];

NSLog(@"%@", tags);

输出:

(    "#tag1",    "#tag2")

关于ios - 了解如何正确使用 NSRegularExpressions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27856488/

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