为什么这在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^)
但它不起作用。我怎么能抓住这样的东西?
答案 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^")
.*?
允许更多东西在行尾。使用*?
作为量词可以选择最少的字符数。