有人可以向我解释\\A
和\\z
的含义吗?我假设他们在这个正则表达式中有一个特殊的含义,因为它们被转义(但我可能是错的,它们可能分别代表A和z)。谢谢!
private static final Pattern PATTERN = Pattern.compile("\\A(\\d+)\\.(\\d+)\\z");
答案 0 :(得分:11)
\A
表示“字符串开头”,\z
表示“字符串结束”。
您可能在此上下文中看到了^
和$
,但它们的含义可能会有所不同:如果您使用Pattern.MULTILINE
编译正则表达式,那么它们将其含义更改为“行首” “和”行尾“。 \A
和\z
的含义永远不会改变。
还存在\Z
,意思是“字符串的结尾,在任何尾随的新行之前”,类似于$
在多行模式中的作用(它在行结束换行符之前匹配) ,如果它在那里)。
答案 1 :(得分:4)
这个Java表达式:
Pattern.compile("\\A(\\d+)\\.(\\d+)\\z")
产生这个正则表达式:
\A(\d+)\.(\d+)\z
其中\A
表示"字符串开头" \z
表示"字符串结束"。
因此,该模式匹配由一个或多个数字组成的任何字符串,加上小数点加上一个或多个数字。
有关Java正则表达式表示法的所有方面的详细信息,请参阅the Javadoc for java.util.regex.Pattern
。
答案 2 :(得分:1)
查看此参考资料
http://www.regular-expressions.info/reference.html
根据\A
匹配输入的开头,\z
匹配输入的结尾。
他们之前\\
而不仅仅是\
的原因是因为\
也被转义了。