Regex OR (não está funcionando)

1

Não tenho certeza do que sinto falta aqui. Eu tentei algumas combinações que deve funcionar no entanto sempre que eles são combinados o último conjunto de dígitos são soltar.

Eu também fiz o literal do traço "-" para ver se ele ajuda (Não)

Dados da amostra

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

Regex

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

Exemplo aqui - link

Qualquer assistência é muito bem feita, obrigado.

    
por user68650 28.07.2017 / 01:31

1 resposta

1

Regexes são gananciosos. Eles vão combinar a primeira coisa que puderem. (|a|b) sempre corresponderá a uma string nula.

Da mesma forma, (\d{7}|\d{7}-\d{7}) sempre corresponderá apenas a \d{7} (ou não corresponderá a todos). Nunca irá para a segunda opção.

O que você deseja é (\d{7}-\d{7}|\d{7}) . Mas por que ser tão detalhado?

\d{7}(-\d{7})? funcionará bem.

Então você tem:

Range_\d{7}(-\d{7})? 
    
por 28.07.2017 / 01:43