相关疑难解决方法(0)

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

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

当前支持的模式语法是ICU指定的语法.ICU正则表达式在http://userguide.icu-project.org/strings/regexp中描述.

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

(?<name>...) 命名捕获组.该<angle brackets>是文字-它们出现在格局.

我编写了一个程序,它获得了一个看似正确的多个范围的匹配 - 虽然每个范围都返回两次(原因未知) - 但我唯一的信息是范围索引及其文本范围.

例如,正则表达式:^(?<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
Run Code Online (Sandbox Code Playgroud)

有没有办法知道" baz"来自捕获组bar2

regex icu ios nsregularexpression

8
推荐指数
2
解决办法
2423
查看次数

捕获的组正则表达式 NSRegularExpression iOS

我正在尝试执行以下正则表达式: ^(\$.)([\d]{1,10})?

https://regex101.com 中$C14325字符串的结果是和。[0-2]:"$C"[2-7]:"14325"

但是,当我使用 执行以下代码时NSRegularExpression,它将作为单个匹配项返回,而不是一个组。

基本上,我试图对这些结果进行分组,并找到一种结果对应于哪个正则表达式的方法。

NSString *regexStr=@"^(\\$.)([\\d]{1,10})?";
NSString *inputStr=@"$C14325";
NSError *regexError;
NSRegularExpression *aRegx=[NSRegularExpression regularExpressionWithPattern:regexStr options:NSRegularExpressionCaseInsensitive error:&regexError];
NSArray *results=[aRegx matchesInString:inputStr options:0 range:NSMakeRange(0, inputStr.length)];
Run Code Online (Sandbox Code Playgroud)

Named capture groups with NSRegularExpression有答案,但我认为rangeAtIndex如果它无法找到该值会抛出异常。

regex objective-c ios nsregularexpression

3
推荐指数
1
解决办法
1861
查看次数

标签 统计

ios ×2

nsregularexpression ×2

regex ×2

icu ×1

objective-c ×1