我有一个变量字符串,当字符串在单词边界处作为一个整体匹配时,应该替换它.

我在这个正则表达式上取得了一些成功:

\b\QExample String to replace\E

或在Kotlin实施:

string.replace("""\b${Regex.escape(toReplace)}""".toRegex(), replacement)

然而,当toReplace类似于[template] Example String to replace时,这不起作用.

我想原因是,[不被视为"单词",因此与\b不匹配.

推荐答案

可以使用空白边界:

(?<!\S)\[template\] Example String to replace

完整Kotlin代码:

string.replace("""(?<!\S)${Regex.escape(toReplace)}""".toRegex(), replacement)

Kotlin相关问答推荐

如果一项工作失败,请继续在Kotlin 等待其他工作/子元素完成

解决Microronaut中多个可能的Bean候选者冲突

使用另一个对象的列表创建对象

Kotlin:类型不匹配:推断的类型已运行,但应等待

在 Kotlin 中将 Array 转换为 IntArray 时丢失值

如何避免键盘打开时jetpack compose 内容上升

验证构造函数中的值组合

Kotlin 编译器在构造函数中报告未使用的表达式,以便构建器采用 vararg lambda

如何从 kotlin 中的数据类访问 val?

Kotlin:不允许在辅助构造函数参数上使用val

Kotlin 从其他类调用成员扩展函数

下拉通知面板时是否可以暂停Android中的任何视频(媒体播放器)应用程序?

Gradle 同步失败:不支持的方法:KotlinPlatformContainer.supports()

创建首选项屏幕时找不到androidx.preference.PreferenceScreen

Kotlin 顶级函数与对象函数

Jetpack Compose – LazyColumn 不重组

如果我可以将 Flow 和 StateFlow 与生命周期范围 \ viewLifecycleOwner.lifecycleScope 一起使用,那么在 ViewModel 中使用 LiveData 有什么意义

修改扩展函数中的this

Kotlin out-projected 类型禁止使用

Kotlin:测试中的 java.lang.NoSuchMethodError