Hai alcuni caratteri Unicode invisibili nei dati di test.
Rimuovere loro e il tuo regex sarà work just fine.
Ad esempio, il tuo esempio di (-112|-522)
è in realtà \u0028\u002d\u0031\u0031\u0032\u007c\u202d\u202d\u002d\u0035\u0032\u0032\u202c\u202c\u0029
.
avete un paio di U+202D
(LEFT-TO-RIGHT OVERRIDE) e U+202C
(POP DIREZIONALE FORMATTING) in là.
Se si desidera consentire questi nel vostro regex, si potrebbe includerli:
\(\p{Cf}*(-?\p{Cf}*\d+)\p{Cf}*\|\p{Cf}*(-?\p{Cf}*\d+)\p{Cf}*\)
Ma il modello diventa piuttosto disordinato. Ho appena aggiunto un gruppo di \p{Cf}*
lì per consentire questi caratteri. Nota che dovrai ancora eliminare i caratteri tra il segno meno e le cifre prima di provare a convertire le sottostringhe acquisite in numeri interi.
Probabilmente sarebbe molto più semplice sostituire semplicemente tutto ciò che corrisponde a \p{Cf}+
con una stringa vuota prima di procedere ulteriormente con il modello originale.
fonte
2015-08-19 21:31:05
Sembra a posto. Cosa c'è che non va? – ndn