2014-03-13 223 views
0

我试图创建一个java.util.regex.Pattern将匹配类似于下面的字符串:模式匹配字符串

Unexpected ID 'foo_<some_number>': ERR-125:"IDs": invalid id 

所以我想这个模式应该仅仅是这样的:

Pattern.compile("Unexpected ID 'foo_*': ERR-125:\"IDs\": invalid id"); 

但那并不奏效。 有谁能告诉我为什么它不起作用?我应该做些什么呢?

感谢

回答

4

问题在你Pattern是,您使用的是0以上(贪婪)量词上下划线

试试这个:

String input = "Unexpected ID 'foo_1': ERR-125:\"IDs\": invalid id"; 
//             | any digit 
//             | | once or more (greedy) 
System.out.println(input.matches("Unexpected ID 'foo_\\d+': ERR-125:\"IDs\": invalid id")); 

输出

true 
0

Asterisk的使用是错误的,请尝试使用\ d。

对不起,您已经完成了...好。