我在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"];
答案 0 :(得分:1)
在正则表达式中,(B|C|D)*
只会捕获(B|C|D)
中最后一个匹配的字符,因为*
不在捕获的组中。此外,在角色类中,您不需要使用pipe
来替换,就像在第3部分中所做的那样。因此,您要么使用character class
,要么使用pipe
来分组。在这种特殊情况下,我建议在两个地方使用字符类。
因此,您可以尝试将正则表达式更改为:
"A([BCD]*)([^BCD])"