正規表現OR(動作しない)

正規表現OR(動作しない)

私がここで何を見逃しているのかよくわかりません。動作しなければならないいくつかの組み合わせを試しましたが、結合するたびに最後の数値セットが削除されます。

また、役に立つかどうかを調べるために、ダッシュ文字を「-」にしました(そうではありませんでした)。

サンプル

PriceVolHistory_KITDQ_v1 (Range_0343935).xlsx
Amex_Robin Smyth (Range_0339935-0339982).pdf
0-CHIPS Participant List - 05-05-15 (Range_0339985-0339986).pdf
0-CHIPS Payment Message Key (Range_0339987-0339990).pdf
0-CHIPS Payment Message Structure (range_0339983-0339984).pdf
2610 Data (Range_0339991).xlsx

正規表現

Range_(\d{7}|\d{7}-\d{7})
Range_(\d{7}|Range_\d{7}-\d{7})

ここのサンプル -https://regex101.com/r/skjYvn/1

どんな助けでも大変感謝します。ありがとうございます。

答え1

正規表現は貪欲です。最初の可能な項目と一致します。 (|a|b)常に空の文字列と一致します。

繰り返しますが、(\d{7}|\d{7}-\d{7})常に一致します\d{7}(またはまったく一致しません)。 2番目のオプションに進みません。

代わりに、あなたが望むものです(\d{7}-\d{7}|\d{7})。しかし、なぜそんなに冗談ですか?

\d{7}(-\d{7})?うまくいきます。

だからあなたは次のようになります:

Range_\d{7}(-\d{7})? 

関連情報