Java “的正则表达式”;C:\\";

Java “的正则表达式”;C:\\";,java,regex,Java,Regex,我试图找到一个正则表达式,可以找到字符串“C:\\” 我的代码是: String test = "C:\\"; String regex = "[a-z]*[A-Z]*[:]*\\"; if(test.matches(regex)) System.out.println("Success!"); else System.out.println("Failure!"); 我有个异常。我尝试了很多正则表达式,结果都是一样的 我该怎么解决呢?简单(但可能没用)

我试图找到一个正则表达式,可以找到字符串“C:\\”

我的代码是:

String test = "C:\\";  
String regex = "[a-z]*[A-Z]*[:]*\\";  
if(test.matches(regex))  
    System.out.println("Success!");  
else  
    System.out.println("Failure!");  
我有个异常。我尝试了很多正则表达式,结果都是一样的

我该怎么解决呢?

简单(但可能没用)的答案是“*”


在这种情况下,您显然想要更接近于:
“[a-zA-Z]:\\\\”
。这只需要一个字母,然后是冒号,然后是反斜杠。假设您的字符串代表Windows上某个磁盘的根目录,那么它应该比任何情况下都要接近。

序列\\在大多数语言中都有特殊意义。这就是为什么它是一个不好的路径分隔器的选择。这里的问题是它在Java和正则表达式中有特殊的意义。这意味着在Java和正则表达式中将\\\\转换为\\

顺便说一句,我想你只需要“[a-zA-z]:\ \ \ \”


OMG它对SO也有特殊的含义:p

您需要双重转义,一次用于Java字符串转义,一次用于正则表达式转义:

String test = "C:\\";
String regex = "[a-zA-Z]:\\\\";
if ...

如果您试图显式地查找
C:\
,您可以使用
String regex=“C:\\”不是很灵活,但非常适合

您可能要查找的内容类似于
String regex=“[A-Z]:\ \”
也就是说,“在“a”和“Z”之间匹配单个字符,然后“匹配字符”:“然后”匹配字符\”。

如果需要包含小写开头字母,请使用
String regex=“[a-zA-Z]:\ \”

为什么不直接使用
String.contains(“C:\\”)