Java正则expression式元字符(。)和普通的点?

在Java RegEx中,如何找出区别. (点)元字符和正常点,正如我们在任何句子中使用的。 ( *+/d ,…)如何处理其他元字符的这种情况

如果要在正则expression式中使用特殊含义的点或其他字符作为普通字符,则必须用反斜线将其转义。 由于Java中的正则expression式是普通的Javastring,因此您需要自行转义反斜杠,所以您需要两个反斜杠,例如\\.

Perl风格的正则expression式(Java正则expression式引擎或多或less地基于此)将以下字符视为特殊字符:

.^$|*+?()[{\字符类有特殊含义,

]^-\ 字符类( [...] )中有特殊的含义。

所以你需要根据上下文来逃避那些(而且只有那些)符号(或者在字符类的情况下,把它们放在不能被误解的位置)。

不必转义其他字符可能工作,但一些正则expression式引擎会将此视为语法错误,例如\_将在.NET中导致错误。

其他一些会导致错误的结果,例如\< <在Perl中被解释为一个文字< ,而在egrep则意味着“文字边界”。

所以,写一个匹配各种括号/大括号/小括号的字符类来匹配1.50$ ,- -2.00$等和[(){}[\]]

如果您需要将用户inputstring转换为正则expression式,请使用java.util.regex.Pattern.quote

进一步阅读: Jan Goyvaert关于转义元字符的博客RegexGuru

其他成员提出的解决scheme不适合我。

但是我发现这个:

在java中regexp写一个点[.]

用反斜杠转义特殊字符。 \.\*\+\\d等等。 如果你不确定,你可能会逃避任何非字母字符,不pipe它是否特殊。 有关更多信息,请参阅java.util.regex.Pattern的javadoc 。

我想匹配以“。*”结尾的string。为此,我必须使用以下内容:

 "^.*\\.\\*$" 

如果你考虑一下,真是愚蠢的:D Heres是什么意思。 在string的开头,可以有零个或多个字符,后跟一个点“”。 然后在string的末尾加一个星号(*)。

我希望这能派上用场。 谢谢Fabian的反斜杠。

这里是代码,你可以直接复制粘贴:

 String imageName = "picture1.jpg"; String [] imageNameArray = imageName.split("\\."); for(int i =0; i< imageNameArray.length ; i++) { system.out.println(imageNameArray[i]); } 

如果错误地在前后留下了空间“。 在这种情况下? 也总是考虑这些空间的最佳做法。

 String imageName = "picture1 . jpg"; String [] imageNameArray = imageName.split("\\s*.\\s*"); for(int i =0; i< imageNameArray.length ; i++) { system.out.println(imageNameArray[i]); } 

在这里,\\ s *是考虑的空间,并给你只需要拆分的string。