У вас есть некоторые невидимые символы Юникода в тестовых данных.
Удалите их, и ваше регулярное выражение будет work just fine.
Например, ваш пример (-112|-522)
- это фактически \u0028\u002d\u0031\u0031\u0032\u007c\u202d\u202d\u002d\u0035\u0032\u0032\u202c\u202c\u0029
.
У вас есть несколько U+202D
(влево-вправо ПЕРЕОПР) и U+202C
(POP DIRECTIONAL ФОРМАТИРОВАНИЕ) там.
Если вы хотите, чтобы они в своем регулярном выражении, вы можете включить их:
\(\p{Cf}*(-?\p{Cf}*\d+)\p{Cf}*\|\p{Cf}*(-?\p{Cf}*\d+)\p{Cf}*\)
Но картина становится довольно грязным. Я только что добавил кучу \p{Cf}*
, чтобы разрешить эти символы. Обратите внимание, что вам все равно придется избавиться от символов между знаком минус и цифрами, прежде чем пытаться преобразовать захваченные подстроки в целые числа.
Возможно, было бы намного проще заменить все, что соответствует \p{Cf}+
, с пустой строкой, прежде чем продолжить свой исходный узор.
Все хорошо. Что с этим не так? – ndn