Objective-c RegEx变量名($ 1,$ 2等)

时间:2013-02-10 21:51:10

标签: ios objective-c regex string variables

我在Objective-C中有一个正则表达式,我需要知道如何获得某个变量......

我想找到一个字母,其中包含字母“a”,后跟任意数字(包括零)的B,C和D,然后在第一个非B,C,DI想要关闭我的搜索声明。然后我想用F替换A并在搜索字符串的末尾添加F.

例如:“ZYXABCBBDBCBDEJKS”将搜索并返回:“ZYX ABCBBDBCBDE JKS”...所以我现在使用的字符串是“ABCBBDBCBDE”,我希望这个字符串变成这个字符串“FBCBBDBCBDEF”然后被放回原始字符串...所以最后返回的字符串将是“ZYX F BCBBDBCBDE F 的JKS“

我是RegEx的新手,但我用下面的Objective-c代码给了它一个镜头而且它不起作用...我认为这是因为我在第二行代码上的变量(在“withTemplate”中部分)错了......我不应该使用“$ 2”或“$ 1”?

代码:

regex = [NSRegularExpression regularExpressionWithPattern:@"A(B|C|D)*([^B|C|D])"
                                                          options:0
                                                            error:nil];
modifiedString = [regex stringByReplacingMatchesInString:myString
                                                         options:0
                                                           range:NSMakeRange(0, [htmlstring length])
                                                    withTemplate:@"F$1$2F"];

1 个答案:

答案 0 :(得分:1)

在正则表达式中,(B|C|D)*只会捕获(B|C|D)中最后一个匹配的字符,因为*不在捕获的组中。此外,在角色类中,您不需要使用pipe来替换,就像在第3部分中所做的那样。因此,您要么使用character class,要么使用pipe来分组。在这种特殊情况下,我建议在两个地方使用字符类。

因此,您可以尝试将正则表达式更改为:

"A([BCD]*)([^BCD])"