Impossibile generare regex per la stringa

Oct 13 2020

Ho una stringa abc-[|123|243|]-xyz-[|432|567|]e voglio generare una regex che corrisponda alla stringa specifica.

L'espressione regolare dovrebbe essere testata rispetto ai seguenti esempi e con il risultato specifico.

Exp 1: abc-[|123|234|]-xyz-[|432|567|]( 123è presente in [|123|243|])

Risultato: partita

Exp 2: xyz-[|123|243|]-abc-[|432|567|](ordine di abce xyzscambiato)

Risultato: nessuna corrispondenza

Exp 3: abc-[|243|563|]-xyz-[|432|567|]( 243e 432sono presenti)

Risultato: partita

Exp 4: xyz-[|143|434|]-abc-[|432|999|]( [|148|434|]non corrisponde a nessun numero in [|123|243|])

Risultato: nessuna corrispondenza

Ho provato a creare una regex ma funziona solo nel caso esatto e non funziona in altri casi.

abc-\[\|123\||243\|\]-xyz-\[\|432\||567\|\]

Risposte

1 WiktorStribiżew Oct 13 2020 at 10:05

Puoi usare

^abc-\[\|(?:123|243)\|\d+\|\]-xyz-\[\|432\|\d+\|\]$

Guarda la demo regex .

Dettagli

  • ^ - inizio della stringa
  • abc-\[\| - abc-[|
  • (?:123|243)- o 123o243
  • \| - a |
  • \d+ - 1+ cifre
  • \|\]-xyz-\[\|432\|- un |]-xyz-[|432|testo
  • \d+ - 1+ cifre
  • \|\]- un |]testo
  • $ - fine della stringa