我有適合此模式的數據:(x|y)
。 x
和y
可能是負數,並且在這種情況下標記-
存在。 我想建立一個正則表達式來匹配x和y。正則表達式X/Y座標
以下是我現在的表情,這似乎是有效的,但我不工作:
/\((-?\d+)\|(-?\d+)\)/
這裏是原始數據:
(-112|-522)
(-112|522)
(112|-522)
(112|522)
任何想法?
我有適合此模式的數據:(x|y)
。 x
和y
可能是負數,並且在這種情況下標記-
存在。 我想建立一個正則表達式來匹配x和y。正則表達式X/Y座標
以下是我現在的表情,這似乎是有效的,但我不工作:
/\((-?\d+)\|(-?\d+)\)/
這裏是原始數據:
(-112|-522)
(-112|522)
(112|-522)
(112|522)
任何想法?
您的測試數據中有一些不可見的Unicode字符。
刪除它們,你的正則表達式將會是work just fine。
例如,你的(-112|-522)
的例子實際上是\u0028\u002d\u0031\u0031\u0032\u007c\u202d\u202d\u002d\u0035\u0032\u0032\u202c\u202c\u0029
。
你有幾個U+202D
(LEFT-TO-RIGHT OVERRIDE),並在那裏U+202C
(POP方向格式)。
如果你想要讓這些在你的正則表達式,你可以包括這些:
\(\p{Cf}*(-?\p{Cf}*\d+)\p{Cf}*\|\p{Cf}*(-?\p{Cf}*\d+)\p{Cf}*\)
但是這種模式變得相當混亂。我只是在那裏添加了一堆\p{Cf}*
以允許這些字符。請注意,在嘗試將捕獲的子字符串轉換爲整數之前,您仍然必須清除減號和數字之間的字符。
在進一步處理原始模式之前,用一個空字符串替換與\p{Cf}+
相匹配的所有內容可能會簡單得多。
我如何刪除unicode字符在PHP? – BadTigrou
@BadTigrou'$ text = preg_replace('/ \ p {Cf} + /','',$ text);' –
幹得好。 <))))))))))))> –
看起來很好。它有什麼問題? – ndn