Java正则表达式解释

5

请问有人能解释一下\\A\\z的含义吗?我假设它们在这个正则表达式中有特殊的含义,因为它们被转义了(但我可能是错的,它们可能只代表A和z)。谢谢!

private static final Pattern PATTERN = Pattern.compile("\\A(\\d+)\\.(\\d+)\\z");

4
请点击此处查看:http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html。 - Vikdor
你需要双斜杠,因为在Java中单个反斜杠用于转义下一个字符。因此,要实现\A,你需要\A。这就是Java的方式 :) - Morten Jensen
3个回答

12

\A 表示“字符串的开头”,\z 表示“字符串的结尾”。

您可能在这个上下文中看到了 ^$,但它们的含义可能会有所不同:如果使用 Pattern.MULTILINE 编译一个正则表达式,则它们的含义会改变为“行的开头”和“行的结尾”。\A\z 的含义永远不会改变。

此外,还有 \Z,它表示“字符串的结尾,在任何尾随换行符之前”,这类似于多行模式下 $ 的作用(匹配换行符字符右侧的位置,如果存在的话)。


我正想问一下\A和\z是否类似于^和$。感谢您的解释! - BJ Dela Cruz

4
这是一个Java表达式:
Pattern.compile("\\A(\\d+)\\.(\\d+)\\z")

生成此正则表达式:

\A(\d+)\.(\d+)\z

\A表示“字符串的开头”,\z表示“字符串的结尾”。因此,该模式匹配由一个或多个数字、一个小数点和一个或多个数字组成的任何字符串。

有关Java正则表达式符号的所有方面的详细信息,请参见java.util.regex.Pattern的Javadoc


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接