在 java 中匹配以下字符串的正确正则表达式是什么?
更新_1_0_3_to_1_0_4
我试过了
boolean t1= files.matches("^update_\\d_\\d_\\d{1,2}$\\_to_\\d_\\d_\\d{1,2}$");
System.out.println("The strings match " + t1);
但是,它不起作用,因此返回 false。
"^update_\\d_\\d_\\d{1,2}_to_\\d_\\d_\\d{1,2}$"
我所做的只是$\\
从中间移除。$
表示字符串的结尾(所以它应该只在结尾,当然)并且_
不需要转义,所以\\
之前它是不必要的。
$
表示“字符串结尾”,因此...$\\_...
永远不会是您想要的(它的意思是“字符串结尾,后跟下划线”)。
事实上,String.matches
已经与整个字符串匹配,因此^
和$
大多是多余的。而且你不需要逃避_
。把它放在一起:
boolean t1= files.matches("update_\\d_\\d_\\d{1,2}_to_\\d_\\d_\\d{1,2}");
System.out.println("The strings match " + t1);
一个较短的正则表达式:^update(_\\d){2}_\\d{1,2}_to(_\\d){2}_\\d{1,2}$
甚至这样:^update(_\\d+){3}_to(_\\d+){3}$
正如其他人所说,$
可以删除中间的。