1

我在 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"];
4

1 回答 1

1

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

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

"A([BCD]*)([^BCD])"
于 2013-02-10T21:54:57.353 回答