.
和在任何句子中使用的普通点之间的区别。 如何处理其他元字符(例如*
,+
,\d
等)的类似情况。如果您想使正则表达式中具有特殊含义的符号,如点号等成为正常字符,则需要使用反斜杠进行转义。由于 Java 中的正则表达式是普通的 Java 字符串,因此您需要转义反斜杠本身,因此需要使用两个反斜杠,例如 \\。
其他成员提出的解决方案对我没有用。
但我发现了这个:
要在Java正则表达式中转义一个点,可以写成 [.]
。
\\.
在我的情况下不起作用:
\.
抱怨 .
不需要被转义,
\\.
让它认为是 \.
而不是 .
,
\\\.
会导致构建器抛出错误,
[.]
是唯一有效的方法。 - mithunc\\.
会给你 \.
,这正是正则表达式需要看到的点而不是任意字符匹配器。 - klaarPerl风格的正则表达式(Java正则表达式引擎基本上是基于它的)将以下字符视为特殊字符:
.^$|*+?()[{\
在字符类之外具有特殊含义,
]^-\
在字符类内部具有特殊含义([...]
)。
因此,您需要根据上下文转义这些符号(仅限这些符号)或在字符类中将它们放置在不能被误解释的位置。
不必要地转义其他字符可能会起作用,但某些正则表达式引擎会将其视为语法错误,例如在.NET中,\_
将导致错误。
有些转义字符会导致错误结果,例如在Perl中 \<
被解释为一个字面的 <
,但在egrep
中它的含义是“单词边界”。
因此,编写 -?\d+\.\d+\$
来匹配 1.50$
,-2.00$
等,并使用 [(){}[\]]
来匹配所有种类的括号/花括号/括号。
如果您需要将用户输入的字符串转换为正则表达式安全形式,请使用 java.util.regex.Pattern.quote
。
使用反斜杠转义特殊字符。例如:\.
、\*
、\+
、\\d
等等。如果您不确定,可以转义任何非字母字符,无论它是否特殊。请参见java.util.regex.Pattern的javadoc获取更多信息。
以下是您可以直接复制粘贴的代码:
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* 考虑到空格并只提供所需的拆分字符串。
"^.*\\.\\*$"
"\\.\\*$"
即可。如果字符串开头对您没有影响,则无需匹配开头。 - Ophidian我正在使用JGrasp进行一些基本的数组操作,发现可以通过访问器方法来使用'.'在char[][]数组中放置一个单独的点。
.folder
来进行分割。对于这种情况,使用 \\.folder
和 [.]folder
的解决方法都不起作用。
以下代码适用于我
String[] pathSplited = Pattern.compile("([.])(folder)").split(completeFilePath);