如何在Kotlin中用反斜杠转义字符串中的所有正则元字符
Kotlin正则特殊字符自动转义方法
Kotlin 可以直接调用 Java 标准库中的 Pattern.quote() 方法,实现对所有正则特殊字符的自动转义。这个方法会把输入字符串包裹在 \Q 和 \E 之间(正则里的字面量引用标记),让正则引擎将整个字符串当作普通文本处理,完全忽略其中的元字符特性。
举两个实际使用的例子:
- 输入字符串
"This is good.",调用Pattern.quote("This is good.")后,得到的结果是"\QThis is good.\E",用这个作为正则模式去匹配时,.会被当作普通的句点处理,不会触发正则的通配符特性。 - 输入字符串
"?a [+",调用Pattern.quote("? a [+")得到"\Q? a [+\E",所有特殊字符都会被正确转义,无需手动添加反斜杠。
如果你需要的是手动添加反斜杠的那种转义结果(比如直接输出带\的字符串),可以自己实现一个简单的扩展函数,遍历字符串中的每个字符,判断是否是正则元字符,若是则在前面添加反斜杠。比如:
fun String.escapeRegex(): String { val specialChars = "\\|.?+*()[]{}^$" return buildString { this@escapeRegex.forEach { char -> if (char in specialChars) { append('\\') } append(char) } } }
使用这个扩展函数的话:
"This is good.".escapeRegex()会返回"This is good\.""?a [+".escapeRegex()会返回"\? a \[\+"
内容的提问来源于stack exchange,提问作者kefomo
相关产品推荐
相关产品推荐

