java - 是否需要转义Java中正则表达式的斜杠 ('/' ) 字符

标签 java regex

我有以下代码片段:

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());  

我的问题:

  1. 这两种模式有什么区别(从 Java 的角度来看),或者有什么区别吗?

  2. 从 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/

相关文章:

c# - C# 中的 Java 的 search()、get() 和 size()

java - Azure SDK 内存不足错误

javascript -\z JavaScript 正则表达式中等效的 PCRE 以匹配所有 Markdown 列表项

java - 正则表达式验证 - 显示违规字符。 javax.验证

java - Scala 正则表达式解析 URL

php - 使用php正则表达式获取YouTube播放列表ID

java - 照片删除后如何更新ArrayList <Bitmap>?

java - 在java数组中查找最小/最大数字

java - IDeepCopy接口(interface)java

javascript - 替换下划线后的数字