匹配在单词边界上包含特殊字符的变量字符串的正则表达式
Regex that matches a variable String containing special characters on word boundaries
我有一个变量字符串,当字符串在单词边界处作为一个整体匹配时,应该将其替换。
变量 String 可能在任何位置包含任何特殊字符。
我使用这个正则表达式取得了一些成功:
\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)
我有一个变量字符串,当字符串在单词边界处作为一个整体匹配时,应该将其替换。 变量 String 可能在任何位置包含任何特殊字符。
我使用这个正则表达式取得了一些成功:
\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)