匹配一个反斜杠的Java正则表达式
嗨,我正在尝试做一个常规的表达式,它只匹配一次“\”,所以我可以检测到一个目录级别。这个例子不起作用,我不知道Java中的常规表达式匹配一个反斜杠的Java正则表达式,java,regex,Java,Regex,嗨,我正在尝试做一个常规的表达式,它只匹配一次“\”,所以我可以检测到一个目录级别。这个例子不起作用,我不知道Java中的常规表达式 String input=“C:\\andres\\an”; //字符串输入=“C:\\andres”; Pattern p=Pattern.compile(“\\{1}”); 匹配器m=p.Matcher(输入); if(m.find()){ System.out.println(“La cadena SI contiene un caracter\\”; 系统
String input=“C:\\andres\\an”;
//字符串输入=“C:\\andres”;
Pattern p=Pattern.compile(“\\{1}”);
匹配器m=p.Matcher(输入);
if(m.find()){
System.out.println(“La cadena SI contiene un caracter\\”;
系统输出打印项次(输入);
}否则{
System.out.println(“La cadena no contiene un caracter\\”;
系统输出打印项次(输入);
}
}
我会使用这种模式:
^(?!.*\\.*\\).*\\.*$
此正则表达式声明不会出现两个(或更多)反斜杠。然后,它继续匹配一个反斜杠。在Java代码中:
String input = "C:\\andres";
if (input.matches("(?!.*\\\\.*\\\\).*\\\\.*")) {
System.out.println("MATCH");
}
但是,String#split
可能提供一种更简单的方法:
String input = "C:\\andres";
if (input.split("\\\\").length == 2) {
System.out.println("MATCH");
}
在反斜杠上拆分时,只有一个反斜杠的匹配路径应该正好有两个结果项。使用一个反斜杠字符类regex,您可以很容易地做到这一点:
^[^\\]*\\[^\\]*$
在Java正则表达式中,字符串应为:
final String regex = "^[^\\\\]*\\\\[^\\\\]*$";
正则表达式详细信息:
:开始^
:再匹配0个非[^\\]*
\
:匹配单个\\
\
:再匹配0个非[^\\]*
\
:结束$
.matches()
方法中使用此正则表达式,则不需要锚定^
和$
,您可以使用:
final String regex = "[^\\\\]*\\\\[^\\\\]*";