2

在 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。

4

3 回答 3

3

"^update_\\d_\\d_\\d{1,2}_to_\\d_\\d_\\d{1,2}$"

我所做的只是$\\从中间移除。$表示字符串的结尾(所以它应该只在结尾,当然)并且_不需要转义,所以\\之前它是不必要的。

于 2013-05-29T23:37:11.563 回答
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);
于 2013-05-29T23:37:44.570 回答
1

一个较短的正则表达式:^update(_\\d){2}_\\d{1,2}_to(_\\d){2}_\\d{1,2}$

甚至这样:^update(_\\d+){3}_to(_\\d+){3}$

正如其他人所说,$可以删除中间的。

于 2013-05-29T23:52:53.443 回答