2016-11-20 61 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

.在正则表达式模式中有特殊含义。

如果你想得到一个“简单点”,你需要引用/转义它(如"\\.")。

这特殊的含义是(在正常配置)“除换行符任何字符”,这完全符合你的其他条件,所以您可以简化这

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