次のような文字列を解析しようとしています。
AxBxCxAxBxCxAxBxCxAxBx...AxBZCx...
どこ
- リスト項目
- A は既知の文字列です (「foo」など)
- B は既知の文字列です (「バー」など)
- C は既知の文字列です (「baz」など)
- x は、A、B、または C を含まない 0 個以上の未知の文字のシーケンスです
- Z は既知の文字列です (「ゴリラ」など)
私が知る必要があるのは、BZC の前に現れる A の出現回数です (1 回以上になります)。Z は任意の x の一部として表示される可能性があるため、B と C の部分は無関係ではありません。
私は正規表現の初心者ですが、これはまさにそのような仕事のようです。ループを含むプログラミング言語の実装 (トークナイザー アルゴリズムなど) は避けたいと思います。
編集: もう少し考えてみると、Z は最初に私が求めていると言ったものですが、本当に重要なのは BZC であることに気付きました。必要なのはその前の A のカウントだけであり、x に A が決して含まれないことを考えると、Z を元の BZC として定義し、次のように問題を単純化できます。
解析する元の文字列: xAxAxAx...Z
ここで、A にも x にも Z が含まれておらず、x には A が含まれていません。Z の前の A のインスタンスの数を探します。