为什么这在 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^)
但它不起作用。我怎么能抓住这样的东西?
因为在 Java 中,该matches
方法会尝试匹配整个字符串。你需要find
:
Pattern.compile("\\A[/0-9]").matcher("2 z CEA|B2 z E^").find()
(请参阅的 JavadocPattern.matches()
、的 JavadocMatcher.matches()
和的 JavadocMatcher.find()
。)
它只匹配第一个数字 2 而不是整个字符串,所以它是错误的
问题是.matches()
与整个字符串进行比较,因此模式必须匹配它。尝试这个:
Pattern.matches("\\A[/0-9].*?","2 z CEA|B2 z E^")
允许更多的.*?
东西在行尾。使用*?
量词使其选择最少数量的字符。