gpt4 book ai didi

regex - matchesInString 函数在 Swift 中返回一个空数组

转载 作者:行者123 更新时间:2023-11-28 10:26:38 25 4
gpt4 key购买 nike

我有这段代码在 Objective-C 中工作

NSRegularExpression* regex = [[NSRegularExpression alloc] initWithPattern:@"(.*?)(<[^>]+>|\\Z)" options:NSRegularExpressionCaseInsensitive|NSRegularExpressionDotMatchesLineSeparators error:nil];
NSArray* results = [regex matchesInString:text options:NSMatchingReportProgress range:NSMakeRange(0, text.length)];

但是 Swift 版本不工作。 matchesInString 返回一个空的 Array(在两种情况下使用相同的标记文本)

let regexOptions = NSRegularExpressionOptions.CaseInsensitive | NSRegularExpressionOptions.DotMatchesLineSeparators
let regex = NSRegularExpression.regularExpressionWithPattern("(.*?)(<[^>]+>|\\Z)", options: regexOptions, error: nil)
var results = regex.matchesInString(markupText, options: nil, range: NSMakeRange(0, countElements(markupText))) as Array<NSTextCheckingResult>

即使文档指出 matchesInString 返回 NSTextCheckingResultArray,我注意到在 Objective-C 代码中(有效) Array 包含 NSSimpleRegularExpressionCheckingResult 对象而不是 NSTextCheckingResult 对象。 Swift 版本中报告的空 Array 报告了零个 NSTextCheckingResult 对象

知道这里缺少什么吗?

最佳答案

更新,这对我有用:

let regexOptions:NSRegularExpressionOptions?
= NSRegularExpressionOptions.CaseInsensitive

var matchingError : NSError?
let regex = NSRegularExpression(pattern: "(.*?)(<[^>]+>|\\Z)",
options: regexOptions!, error: &matchingError)

let markupText = "<html></html>"

let results = regex.matchesInString(markupText, options: nil,
range: NSMakeRange(0, countElements(markupText))) as Array<NSTextCheckingResult>

我不确定为什么 regexOptions 必须是可选的。可能是编译器中的错误。

旧思想

这可能是 Xcode6b2 中的一个错误。我将您的示例简化为一行:

let regexOptions = NSRegularExpressionOptions.CaseInsensitive

我得到这个错误:

fatal error: Can't unwrap Optional.None

我会为此提交错误。

关于regex - matchesInString 函数在 Swift 中返回一个空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24344697/

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