reserviert Sie haben einige unsichtbare Unicode-Zeichen in Ihren Testdaten.
Entfernen Sie sie, und Ihre Regex wird work just fine.
Zum Beispiel ist Ihr Beispiel (-112|-522)
eigentlich \u0028\u002d\u0031\u0031\u0032\u007c\u202d\u202d\u002d\u0035\u0032\u0032\u202c\u202c\u0029
.
Sie haben ein paar U+202D
(von links nach rechts KORREKTUR) und U+202C
(POP DIREKTIONALE FORMATIERUNG) dort.
Wenn Sie diese in Ihrem regex zulassen möchten, könnten Sie ihnen gehören:
\(\p{Cf}*(-?\p{Cf}*\d+)\p{Cf}*\|\p{Cf}*(-?\p{Cf}*\d+)\p{Cf}*\)
Aber das Muster wird ziemlich chaotisch. Ich habe gerade ein paar \p{Cf}*
hinzugefügt, um diese Zeichen zu ermöglichen. Beachten Sie, dass Sie immer noch die Zeichen zwischen dem Minuszeichen und den Ziffern loswerden müssen, bevor Sie versuchen, die erfassten Teilzeichenfolgen in Ganzzahlen umzuwandeln.
Es wäre wahrscheinlich viel einfacher, einfach alles zu ersetzen, das \p{Cf}+
mit einem leeren String entspricht, bevor Sie mit Ihrem ursprünglichen Muster fortfahren.
Es sieht gut aus. Was ist daran falsch? – ndn