Java 边界匹配正则表达式

Java 边界匹配正则表达式,java,regex,Java,Regex,为什么这在Java中是错误的 Pattern.matches("\\A[/0-9]","2 z CEA|B2 z E^") 编辑: 我试过:(这样我也能赶上新台词) 但它不起作用。如何捕获这样的内容?因为在Java中,匹配方法试图匹配整个字符串。您需要查找: Pattern.compile("\\A[/0-9]").matcher("2 z CEA|B2 z E^").find() (请参见和。)它只匹配第一个数字2,而不匹配整个字符串,因此为false问题在于.matches()与整个字符

为什么这在Java中是错误的

Pattern.matches("\\A[/0-9]","2 z CEA|B2 z E^")
编辑: 我试过:(这样我也能赶上新台词)


但它不起作用。如何捕获这样的内容?

因为在Java中,
匹配方法试图匹配整个字符串。您需要
查找

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

(请参见和。)

它只匹配第一个数字2,而不匹配整个字符串,因此为false

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

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

*?
允许在行的末尾添加更多的内容。对量词使用
*?
可以选择最小数量的字符。

如何包含新行?我尝试了
“\\A[/0-9][.\\s]*?”
,但默认情况下,它不起作用。类匹配除换行以外的所有内容。您可以在正则表达式的开头包含一个
(?s)
,以将匹配置于“单行模式”,其中。不匹配行尾字符<代码>(?s)\\\A[/0-9].*?
。特殊字符在[]部分中的工作方式不同,它们只是字符。。。不特别。类
[.\\s]
表示匹配“.”、“\”或“s”。
Pattern.matches("\\A[/0-9].*?","2 z CEA|B2 z E^")