边界匹配器正则表达式

时间:2012-10-25 00:28:29

标签: java regex

为什么这在Java中是错误的?

Pattern.matches("\\A[/0-9]","2 z CEA|B2 z E^")

编辑: 我试过:(这样我也可以抓到新的线条)

Pattern.matches("\\A[/0-9][.\\s]*?","2 z\n CEA|B2 z E^)

但它不起作用。我怎么能抓住这样的东西?

3 个答案:

答案 0 :(得分:3)

因为在Java中,matches方法尝试匹配整个字符串。您需要find代替:

Pattern.compile("\\A[/0-9]").matcher("2 z CEA|B2 z E^").find()

(请参阅the Javadoc for Pattern.matches()the Javadoc for Matcher.matches()the Javadoc for Matcher.find()。)

答案 1 :(得分:1)

它只匹配第一个数字2而不是整个字符串,所以它是假的

答案 2 :(得分:0)

问题是.matches()与整个字符串进行比较,因此模式必须与之匹配。试试这个:

Pattern.matches("\\A[/0-9].*?","2 z CEA|B2 z E^")

.*?允许更多东西在行尾。使用*?作为量词可以选择最少的字符数。

相关问题