此模式匹配输入123456789.2.2.2,它不应该

时间:2016-11-20 09:11:57

标签: java regex string

你的任务是匹配模式abc.def.ghi.jkl,其中每个变量a,b,c,d,e,f,g,h,i,j,k,l可以是任何单个字符,除了新线。

对于上述问题,我将输入与正则表达式匹配:

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

我做错了什么,请帮我纠正上面的正则表达式,使它与我在标题中提供的输入不匹配。目前它以某种方式匹配它。虽然我提供了3但它显然与更多匹配超过3个字符。

1 个答案:

答案 0 :(得分:3)

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

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

并且这个特殊含义是(在正常配置下)“除了换行符之外的任何字符”,它与您的其他条件完全匹配,因此您可以将其简化为

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