1

Objective-Cに正規表現があり、特定の変数を取得する方法を知る必要があります...

どこかに文字「a」が続き、その後に任意の数(ゼロを含む)のB、C、およびDが続く文字列を検索したいのですが、最初の非B、C、DIで検索ステートメントを閉じたい。次に、AをFに置き換えて、検索文字列の最後にFを追加します。

例:「ZYXABCBBDBCBDEJKS」は検索して「ZYXABCBBDBCBDEJKS」を返します...したがって、現在使用している文字列は「ABCBBDBCBDE」です。この文字列をこの文字列「FBCBBDBCBDEF」に変換してから、元の文字列...したがって、最終的に返される文字列は「ZYX FBCBBDBCBDEFJKS になります

私はRegExを初めて使用しますが、以下のObjective-cコードを使用してショットを作成しましたが、機能しませんでした...これは、コードの2行目(「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)*、最後に一致した文字のみをキャプチャします。また、キャラクタークラスでは、第3部のように、を交互に使用する必要はありません。したがって、を使用するか、グループで交互に使用します。そして、この特定のケースでは、両方の場所で文字クラスを使用することをお勧めします。(B|C|D)*pipecharacter classpipe

したがって、正規表現を次のように変更してみることができます。

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