gpt4 book ai didi

ios - NSRegularExpression 中的命名捕获组 - 获取范围组的名称

转载 作者:可可西里 更新时间:2023-11-01 03:30:24 24 4
gpt4 key购买 nike

Apple 表示 NSRegularExpression 基于 ICU 正则表达式库:https://developer.apple.com/library/ios/documentation/Foundation/Reference/NSRegularExpression_Class/

The pattern syntax currently supported is that specified by ICU. The ICU regular expressions are described at http://userguide.icu-project.org/strings/regexp.

该页面(在 icu-project.org 上)声称现在支持命名捕获组,使用与 .NET 正则表达式相同的语法:

(?<name>...) Named capture group. The <angle brackets> are literal - they appear in the pattern.

我编写了一个程序,它获得了与多个范围的单个匹配,这看起来是正确的——尽管每个范围被返回两次(原因未知)——但我拥有的唯一信息是范围的索引和它的文本范围。

例如,正则表达式:^(?<foo>foo)\.(?<bar>bar)\.(?<bar2>baz)$带有测试字符串 foo.bar.baz

给我这些结果:

Idx    Start    Length     Text
0 0 11 foo.bar.baz
1 0 3 foo
2 4 3 bar
3 8 3 baz

有什么办法可以知道“baz ”来自捕获组 bar2

最佳答案

自 iOS11 起支持命名捕获组。 NSTextCheckingResult具有函数 open func range(withName name: String) -> NSRange .

使用正则表达式:^(?<foo>foo)\.(?<bar>bar)\.(?<bar2>baz)$带有测试字符串 foo.bar.baz给出 4 个结果匹配。函数 match.range(withName: "bar2")返回字符串 baz 的范围

关于ios - NSRegularExpression 中的命名捕获组 - 获取范围组的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35840156/

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