1

regexKitLiteを使用して、文字列の先頭にない文字を、それ自体の後に別の文字を付けて置き換えようとしています。

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

sBasePlateが"temp"の場合、 thisPlateはempに設定されますが、 teempであると期待しています。

したがって、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 に答える