この問題に最適な正規表現を作成する手助けが必要です。
開始区切りと終了区切りの組み合わせ/セットがあり、すべての部分文字列/開始区切りから終了区切りまでの単語を取得する必要があります。
次の区切り記号の表を想定します。
スタート | 終わり
猫 | 猫 | 犬
りんご | オレンジ
ライオン | シマウマ
パンダ | 猫
サンプル入力:
substring1 CAT substring2 substring3 DOG substring4 substring5 CAT substring6
APPLE substring7 substring 8 ORANGE ORANGE substring9 DOG substring10 PANDA
substring11 CAT substring12 DOG substring13 LION substring10 substring11 ZEBRA substring12
CAT substring13 substring14 APPLE substring15 substring 16 ORANGE
出力は次のようにする必要があります。
- CAT サブストリング 2 サブストリング 3 DOG
- APPLE substring7 substring8 ORANGE
- PANDA 部分文字列 11 CAT
- LION substring10 substring 11 ZEBRA
- APPLE substring15 substring16 ORANGE
私の正規表現:
CAT (.)*? DOG | APPLE (.)*? ORANGE | LION (.)*? ZEBRE | PANDA (.)*? CAT
他の開始区切り文字が複数出現する文字列の処理に問題があります。
たとえば、次のようにします。
CAT word1 word2 word3 word4 APPLE word5 word6 word7 DOG
このCAT (.)*?と一致することはわかってい ます。DOGですが、部分文字列に開始区切り文字の 1 つが含まれているため、これは間違っています。
部分文字列に他の開始区切り文字が含まれていない場合、開始区切り文字から一致する終了区切り文字までのすべての単語を取得する正規表現が必要です。
なにか提案を?ありがとう