我有以下代码片段:
Pattern patternOfSlashContainingBackSlash=Pattern.compile("\\/");
Pattern patternOfSlashNotContainingBackSlash=Pattern.compile("/");
String slash = "/";
Matcher matcherOfSlashContainingBackSlash = patternOfSlashContainingBackSlash.matcher(slash);
Matcher matcherOfSlashNotContainingBackSlash = patternOfSlashNotContainingBackSlash.matcher(slash);
//both patterns match the slash
System.out.println(matcherOfSlashContainingBackSlash.matches());
System.out.println(matcherOfSlashNotContainingBackSlash.matches());
我的问题:
这两种模式有什么区别(从 Java 的角度来看),或者有什么区别吗?
从 Java 的角度来看,“/”字符是否只是正则表达式的普通字符(而不是像“]”这样的特殊字符)?
我运行这个的java版本是1.8
这个问题与其他问题不同,因为它清楚地表明模式“\\/”和“/”对于 Java 编程语言是相同的。
非常感谢!
最佳答案
/
在 Java 正则表达式中并不特殊,在 JavaScript 中我们有语法 /regex/flags
。 Java 允许转义字符,即使它们不需要它,可能是为了使这种正则表达式更具可移植性。所以 Pattern.compile("\\/")
和 Pattern.compile("/")
的行为相同。
BTW ]
本身不是特殊字符。如果它不是 [...]
构造的一部分,则您无需转义它,但您可以这样做(至少在 Java 中,我不确定其他正则表达式风格)。
关于java - 是否需要转义Java中正则表达式的斜杠 ('/' ) 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43072648/