Objective c NSRegularExpression,选择字符串的一部分

Objective c NSRegularExpression,选择字符串的一部分,objective-c,regex,ios5,nsregularexpression,Objective C,Regex,Ios5,Nsregularexpression,给定如下字符串: Seat 2: Pet21 ($1.98 in chips) Seat ([0-9]+): (.{1,12}) .[$|€|£]([0-9]+\.?[0-9]{0,2}) in chips. 在php中,可以使用正则表达式中的括号选择正则表达式的一部分,如下所示: Seat 2: Pet21 ($1.98 in chips) Seat ([0-9]+): (.{1,12}) .[$|€|£]([0-9]+\.?[0-9]{0,2}) in chips. 这将选择座位

给定如下字符串:

Seat 2: Pet21 ($1.98 in chips) 
Seat ([0-9]+): (.{1,12}) .[$|€|£]([0-9]+\.?[0-9]{0,2}) in chips.
在php中,可以使用正则表达式中的括号选择正则表达式的一部分,如下所示:

Seat 2: Pet21 ($1.98 in chips) 
Seat ([0-9]+): (.{1,12}) .[$|€|£]([0-9]+\.?[0-9]{0,2}) in chips.
这将选择座位号、用户id和芯片数量:

Array
(
    [0] => Array
        (
            [0] => Seat 1: S@pphiR ($0.83 in chips)
            [1] => Seat 2: Pet21 ($1.98 in chips)
            [2] => Seat 3: derphurp ($2.76 in chips)
            [3] => Seat 4: -M-A-R-K-qaz ($0.92 in chips)
            [4] => Seat 5: Rolle55 ($2.45 in chips)
            [5] => Seat 6: SanderDecler ($2 in chips)
        )

    [1] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
            [3] => 4
            [4] => 5
            [5] => 6
        )

    [2] => Array
        (
            [0] => S@pphiR
            [1] => Pet21
            [2] => derphurp
            [3] => -M-A-R-K-qaz
            [4] => Rolle55
            [5] => SanderDecler
        )

    [3] => Array
        (
            [0] => 0.83
            [1] => 1.98
            [2] => 2.76
            [3] => 0.92
            [4] => 2.45
            [5] => 2
        )

)
有没有办法在objective-c中使用NSRegularExpression执行类似操作

编辑:到目前为止,我得到了这个:

    NSRegularExpression *regex = 
    [NSRegularExpression regularExpressionWithPattern:@"Seat [0-9]+: (.{1,12}) .[$|€|£][0-9]+\.?[0-9]{0,2} in chips."
                                              options:0 
                                                error:nil];

    for (NSTextCheckingResult *result in [regex matchesInString:history options:NSMatchingReportCompletion range:NSMakeRange(0, history.length)]) 
    {

    }

您可能希望使用
NSRegularExpression
firstMatchInString:options:range:
方法,该方法返回
NSTextCheckingResult
。然后您需要使用
NSTextCheckingResult
rangeAtIndex:
方法来获取每个子匹配的范围。您可以将范围传递给原始
NSString
substringWithRange:
方法以获取子匹配的文本。

您可能希望使用
NSRegularExpression
firstmatchingstring:options:range:
方法,该方法返回
NSTextCheckingResult
。然后您需要使用
NSTextCheckingResult
rangeAtIndex:
方法来获取每个子匹配的范围。您可以将一个范围传递给原始
NSString
substringWithRange:
方法,以获取子匹配的文本。

回答好,添加了一点:您需要在文本字符串中转义反斜杠,即
\。
应该改为
\.
。回答好,小加法:您需要在文本字符串中转义反斜杠,即
\.
应该是
\.