2013-03-12 77 views
-2
\\s*[\\-]?[\\d]{1,3}\\s+[\\-]?[\\d]{1,3}\\s+[\\-]?[\\d]{1,3}\\s+[\\-]?[\\d]{1,3}\\s* 

我有這個正則表達式可以接受4個座標,它們是整數(正數或負數)。你能否建議在這個正則表達式中的任何錯誤?這個正則表達式覆蓋哪些字符

+0

它不適用於任何情況嗎? – Achrome 2013-03-12 18:02:22

+2

這是在用什麼語言? Java的? – nickb 2013-03-12 18:03:17

+1

您是否遇到特定問題?這聽起來像是否,你只是要求其他人審查其正確性,在這種情況下,它可能是[codereview.SE](http://codereview.stackexchange.com/)更好的候選人。 – Wiseguy 2013-03-12 18:04:45

回答

1

如果它是一個Java正則表達式,那麼匹配一個包含四個整數的字符串是正確的,這四個整數在-999和999之間,用空格分隔。這是非常難看,不過,可以簡化很多:如果它不是Java,那麼你只需要一次一個反斜槓(但你可能需要其他的語法,根據您的語言)

\\s*(?:-?\\d{1,3}\\s+){3}-?\\d{1,3}\\s* 

+0

當你說醜陋?這只是表示在外觀上,還是在表現和所有方面? – Vish 2013-03-12 18:14:05

+1

大部分外觀:違反DRY原則和不必要使用角色類別是兩個主要問題。性能是否更糟取決於正則表達式引擎在識別可優化的功能方面的智能程度。 – 2013-03-12 18:15:57

+0

帶問號和冒號的部分是什麼意思? – Vish 2013-03-12 18:22:15