2016-11-20 67 views
-1

您的任務是匹配模式abc.def.ghi.jkl,其中每個變量a,b,c,d,e,f,g,h, i,j,k,l可以是除換行符之外的任何單個字符。此模式匹配輸入123456789.2.2.2,它不應該是

對於上述問題,我是輸入匹配到正則表達式:

"([^\\n]{3}(.)){3}([^\\n]{3})" 
// this is the regex pattern i am using currently 

什麼我做錯了,請幫我糾正上述正則表達式,以便它不匹配我已經在標題中提供的輸入目前它以某種方式匹配它。儘管我已經提供了3,但它顯然與3個以上的字符匹配。

+1

您還需要引用'.'否則它匹配任何字符。 – Thilo

+1

你想通過'(。)'實現什麼?你確定這是正確的做法嗎?是什麼讓你這麼想的? – Pshemo

+0

但我沒有在前面使用\\字符。因此它應該是一個簡單的點,不是嗎? –

回答

3

.在正則表達式模式中有特殊含義。

如果你想得到一個「簡單點」,你需要引用/轉義它(如"\\.")。

這特殊的含義是(在正常配置)「除換行符任何字符」,這完全符合你的其他條件,所以您可以簡化這

"(...)\\.(...)\\.(...)\\.(...)"