Java - 在正则表达式中转义元字符 [ 和 ]

标签 java regex escaping

<分区>

我正在尝试替换另一个字符串中第一次出现的字符串“[]”:

aString.replaceFirst("[]", "blah");

我得到错误: java.util.regex.PatternSyntaxException: 索引 1 附近的未闭合字符类 []

[ 和 ] 显然是元字符,但是当我尝试用\转义它们时 eclipse 提示它不是有效的转义序列。

我找过但没找到,我错过了什么?

谢谢

最佳答案

正则表达式模式使用 \ 作为转义字符,但 Java 也是如此。因此,要在正则表达式模式中获得单个 转义 (\),您应该编写:\\。要在正则表达式中转义,请将模式加倍:\\\\

当然这非常乏味,更糟的是因为正则表达式有大量这样的转义序列。这就是为什么 Java 正则表达式还支持“引用”模式的乱码部分,这允许您将模式编写为:\\Q[]\\E

编辑:正如其他答案所暗示的那样:java.util.regex.Pattern.quote()\\Q\\之间执行此包装E.

关于Java - 在正则表达式中转义元字符 [ 和 ],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7904695/

相关文章:

java - 如何有效地限制 Java 中函数(任意时间算法)的时间?

java - Java中限制窗口大小

java - 如何找到任意数量的 ArrayLists 的笛卡尔积 - Java

javascript - 正则表达式不匹配字符串

google-analytics - Google Analytics(分析)下载链接跟踪

java - JSON - 是否有任何 XML CDATA 等价物?

regex - 删除样式标签上的样式属性

C# 查找文件名中的特殊字符

ios - 如何在 Xcode 的运行脚本中转义 $SRCROOT 中的空格?

objective-c - 无需转义特殊字符的字符串文字?