1

我正在尝试使用 regexKitLite 替换一个不在字符串开头的字符,然后是另一个字符。

thisPlate = [sBasePlate 
             stringByReplacingOccurrencesOfRegex:[NSString stringWithFormat:@"([^\\^]%@)", thisChar] 
             withString:[NSString stringWithFormat:@"\1%@", thisRep]
             ];

如果sBasePlate为“temp”,则thisPlate设置为emp,但我希望它是temp

因此,我尝试将 NOT THE START OF THE STRING,然后是thisChar 替换为已匹配的内容,然后是thisRep

我的反向引用错了吗?因为那似乎是缺少的。它在thisRep中添加,但忽略了初始匹配,而不是用\1将其放回

对不起,如果我做了一些非常愚蠢和明显的事情,这是我的第一个应用程序。

4

1 回答 1

1

没错,我解决了。我讨厌回答自己的问题,但其他人可能会犯和我一样的错误,所以我错过了一个愚蠢的显而易见的事情......

反向引用应该是 $ 符号。

withString:[NSString stringWithFormat:@"$1%@", prevRep]

这就是该字符串的编写方式。

令人讨厌的是这里的文档说反向引用应该是“\n”:

http://regexkit.sourceforge.net/RegexKitLite/

但是其他地方的一个例子显示了 $n。我应该猜到的。那好吧。

于 2011-08-11T19:27:58.690 回答