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

如何使用正则表达式匹配以指定模式开头的字符串的最后一个单词?

解决方案

嘿,我来帮你搞定这个正则表达式需求!我们可以结合字符串锚定和正则断言的思路,轻松实现「仅当字符串以指定模式开头时,匹配最后一个单词」的效果,下面分两种场景给你具体方案:

方法1:兼容性拉满(捕获组方式)

这种写法几乎支持所有正则引擎,不用纠结版本限制,用起来最稳妥:

^The cat.*\b(\S+)$

逐段解释:

  • ^The cat:用^锚定字符串开头,确保必须以「The cat」开头才会触发后续匹配
  • .*:匹配开头之后的任意内容(默认不包含换行符,若要支持换行需开启多行模式)
  • \b:单词边界,避免把最后一个单词的半截内容误匹配进来
  • (\S+):捕获组,专门匹配最后一个单词(\S+代表一个或多个非空白字符)
  • $:锚定字符串结尾,保证我们抓的是最后一个单词

使用时直接提取捕获组1的内容就行:

  • 输入The cat eats butter → 捕获组1结果是butter
  • 输入The cat drinks milk → 捕获组1结果是milk
  • 输入The dog eats beef → 整个正则不匹配,无结果

方法2:直接匹配目标单词(需支持可变长度后行断言)

如果你的正则引擎支持可变长度后行断言(比如Python 3.7+、JavaScript ES2018+、Java 9+),可以用这个写法直接匹配最后一个单词,不用额外提取捕获组:

(?<=^The cat\b.*)\s+\S+$

逐段解释:

  • (?<=^The cat\b.*):正向后行断言,先检查字符串从开头到当前位置之前是否包含「The cat」(\b是为了避免误匹配「The catty」这类类似开头)
  • \s+:匹配最后一个单词前面的空白字符
  • \S+$:直接匹配到最后一个单词直到字符串结尾

比如输入The cat eats butter,这个正则会直接返回butter。

自定义扩展

如果要更换开头的匹配模式,只需要修改^The cat部分就行。比如要匹配以「My dog」开头的字符串,正则就改成^My dog.*\b(\S+)$。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:40:35