정규식 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}(또는 전혀 일치하지 않습니다). 두 번째 옵션으로 진행되지 않습니다.

대신, 당신이 원하는 것은 입니다 (\d{7}-\d{7}|\d{7}). 그런데 왜 그렇게 장황합니까?

\d{7}(-\d{7})?잘 작동합니다.

그래서 당신은 다음을 얻습니다:

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

관련 정보