为什么这在 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^")
允许更多的.*?东西在行尾。使用*?量词使其选择最少数量的字符。