You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

正则表达式匹配完整单词时如何忽略换行符\n?

解决正则匹配换行符旁cat的问题

原正则的问题

你写的"\b(?i)cat\b"存在两个关键问题:

  1. 在Kotlin字符串中,\b会被解析为退格字符,而非正则表达式中的单词边界,必须写成\\b才能表示正则的单词边界。
  2. 即使修正转义后,\\b匹配的是「单词字符(字母/数字/下划线)」与「非单词字符」的边界——它会匹配\ncat中的边界,但如果你需要严格限定cat两侧是空白字符(包括换行、空格、制表符等),而非任意非单词字符,\\b就不符合需求。

修改后的正则

要匹配两侧为空白字符(或字符串首尾)的完整cat单词,且不区分大小写,可以使用以下正则:

val myRegex = "(?i)(?<=^|\\s)cat(?=\\s|$)"

正则解释

  • (?i):开启不区分大小写模式,可匹配Cat/CAT等变体
  • (?<=^|\\s):反向预查,确保cat的前面是字符串开头,或者任意空白字符(\\s包含换行\n、空格、制表符等)
  • (?=\\s|$):正向预查,确保cat的后面是任意空白字符,或者字符串结尾

测试验证

针对你的测试文本:

"""xsdsdsds\ncat xsdhidhf"""

修改后的正则会成功匹配其中的cat,因为它前面是换行符(属于\\s),后面是空格(也属于\\s)。

内容的提问来源于stack exchange,提问作者JohnBigs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 06:01:36