1

ここに私が持っているものがあります:

(24(?:(?!24).)*)

24 から次の 24 までは検出されますが、2 番目の 24 は検出されないという事実で機能します... (すごい論理)。


このような:

    23252882240013152986400000006090000000787865670000004524232528822400513152986240013152986543530000452400

最初の 24 から次の 24 までが検索されますが、含まれていないため、検索される文字列は次のとおりです。

    23252882 - 2400131529864000000060900000007878656700000045 - 2423252882 - 2400513152986 - 24001315298654353000045 - 2400

それは私がやりたいことの半分です。私が見つける必要があるのはこれです:

    23252882 - 2400131529864000000060900000007878656700000045 - 2423252882240051315298624001315298654353000045 - 2400

まあ言ってみれば:

x = 24
n = 46

する必要がある:

find x then n characters if the n+1 character == x

そのため、開始テイクを見つけてから次の 46 を見つけます。45 番目は、その弦のすべての 24 を含めて、次の弦の開始でなければなりません。

これが明確であることを願っています。

前もって感謝します。

編集

   answer = 24.{44}(?=24)
4

2 に答える 2

4

もうすぐです。

まず、x(24)を見つけます。

24

次に、n= 46文字を見つけます。ここで、46は元の24が含まれています(したがって、44が残っています)。

.{44}

次の文字は(24)でなければなりませんx

(?=24)

すべて一緒に:

24.{44}(?=24)

ここでそれをいじることができます。

与えられた、、からそのような正規表現を構築するという点ではxnあなたの正規表現はで構成されています

x.{n-number_of_characters(x)}(?=x)

ここで、そのまま置換しxて計算しn-number_of_characters(x)ます。

于 2012-05-08T06:29:22.013 に答える