質問タイトルがちょっと混乱していたら申し訳ありませんが、ここでは私の混乱について詳述します。RegExが1つのマッチで複数のマッチングを行うのは普通ですか?
りんご、オレンジ、マンゴー、リンゴ(任意の数または空を持つことができます)、オレンジ[(任意の数または空を持つことができます])に一致する正規表現を使用します。 (マンゴーには[]はない)。
- リンゴが
- リンゴ[] MATCHED
- オレンジ[] MATCHED
- リンゴにマッチした[15]
- リンゴにマッチした[05]:ここでは有効な例をいくつか紹介しますマッチしない(番号は0で始まらないので)
- マンゴー[] NOT MATCHED(マンゴーは[]を持つことができないため)
は、ここで私が思い付くの正規表現です:
/^(mango|(apple|orange)(\[[1-9][0-9]*\])?)$
この正規表現は動作しますが、通常は1以上のマッチンググループを提供します。例えばapple[15]
は、実は、私は多くのグループを作成する()
多くを持っているように動作は正常ですが、私はこの正規を構築するために正しい方法を使用していた場合、私は疑問に思う 1. apple[15]
2. apple[15]
3. [15]
に
を与えます表現? 1回の試合ではあまりにも多くの結果が出るだけです。
また、この正規表現を最適化する方法はありますか?この正規表現はかなり単純ですが、複雑であるようです。
ありがとうございます。
サブグループと一致させたくない場合は、キャプチャしないグループ化を使用してください。 '(?:ABC)' – timolawl