正则表达式匹配JAVA中的两个斜杠
我想在特定字符串中匹配正斜杠正则表达式匹配JAVA中的两个斜杠,java,regex,Java,Regex,我想在特定字符串中匹配正斜杠/或反斜杠\,例如: 1. 你好/你好/再见/ 2. 你好\你好\再见\ 3. 你好\你好/再见\ 4. HiHelloBye 在给定的字符串中,只有最后一条记录不应匹配,因为它既不包含/也不包含\ 我正在使用的内容 if (strFile.matches(".*//.*")) { //String Matches. } else { //Does not match. } 这仅与正斜杠/匹配。我不知道如何为斜杠(用于或条件)编写正则表达式。您要匹配
/
或反斜杠\
,例如:1. <代码>你好/你好/再见/
2. <代码>你好\你好\再见\
3. <代码>你好\你好/再见\
4. <代码>HiHelloBye
在给定的字符串中,只有最后一条记录不应匹配,因为它既不包含
/
也不包含\
我正在使用的内容
if (strFile.matches(".*//.*"))
{
//String Matches.
}
else
{
//Does not match.
}
这仅与正斜杠/
匹配。我不知道如何为斜杠(用于或条件)编写正则表达式。您要匹配的“字符”是:
"[/\\\\]"
首先为字符串复制反斜杠,然后再次为正则表达式复制反斜杠
当您需要在同样使用反斜杠转义字符串的语言中使用反斜杠时,这可能是最糟糕的正则表达式
Java编译器在源代码中看到字符串“\\\\”
,并实际将其转换为“\\\”
(因为它使用\
作为转义字符)
然后正则表达式会看到“\\”
,并且由于它也将\
用作转义字符,因此会将其视为单个\
字符
正如刘燕在一篇评论中指出的那样,您可以通过使用以下方法之一消除一级反斜杠(regex one):
这可能会使它更具可读性
完成所有缩减后,您指定了一个由两个斜杠组成的字符类,如果所讨论的字符与其中任何一个匹配,则返回true
以下代码显示了此操作:
public class testprog {
public static void checkString (String s) {
boolean yes = s.matches(".*[/\\\\].*");
System.out.println ("'" + s + "': " + yes);
}
public static void main (String s[]) {
checkString ("Hi/Hello/Bye/");
checkString ("Hi\\Hello\\Bye\\");
checkString ("Hi\\Hello/Bye\\");
checkString ("HiHelloBye");
}
}
它输出:
'Hi/Hello/Bye/': true
'Hi\Hello\Bye\': true
'Hi\Hello/Bye\': true
'HiHelloBye': false
“你好/你好/再见/”:对
“你好\你好\再见\”:正确
“嗨\你好/再见\”:对
“HiHelloBye”:错误
你想要:
strFile.matches(".*[/\\\\].*")
具体地说,将/
替换为[/\\\\\]
您只需要一个正斜杠,但需要4个反斜杠,因为一个反斜杠是字符串中的转义符,而2是正则表达式的转义符,所以您需要4个。使用替换:strFile.matches(.*(/\124;\\\\).*)
匹配正斜杠或反斜杠。您可能想看看。使用此
[]
将为您提供或功能
Pattern pat = Pattern.compile("[/\\\\]");
Matcher m = pat.matcher("Hi/Hello/Bye/");
while (m.find()){
System.out.println(m.group());
}
当我尝试“abc/efg”.matches(“/|\\\\”)
时,它返回falsematches
匹配整个字符串,因此非常需要*
。您可能想看看Java字符串文档:-),因为转义发生了2次(一次用于Java,一次用于regexp),看起来很难读取,所以有时我会使用\x5C
或\0134
表示regexp字符串中的单个\
字符。因此,由于字符串转义,regexp变成了*[/\x5C].*
实际上是[/\\x5C]
,但我明白你的意思。我将添加到答案中。匹配
匹配整个字符串,因此非常需要像这样的s.matches(.*[/\\\].*)
@KumarVivekMirta您是对的。我使用模式
和匹配器
进行了尝试。这很好。说另一个人是对的需要很大的勇气。。。坚持下去。。。这就是造就一个有个性的人的原因。。。。。为你干杯。。。
Pattern pat = Pattern.compile("[/\\\\]");
Matcher m = pat.matcher("Hi/Hello/Bye/");
while (m.find()){
System.out.println(m.group());
}