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

如何用正则表达式提取you之后、/之前的字符串内容?

解决方案

针对你的需求,这里给两种可行的正则处理方式:

用基础R的sub函数

直接通过捕获组提取目标内容,替换整个字符串为捕获到的单词:

x = "Hello   how are    you Peter /"
x = sub(".*you\\s+(\\w+)\\s+/", "\\1", x)
# 结果:x = "Peter"

正则说明:

  • .*:贪婪匹配"you"之前的所有内容
  • you\\s+:匹配"you"以及后面的一个或多个空白字符(不管空格有多少)
  • (\\w+):捕获我们需要的单词(字母、数字、下划线,这里就是Peter)
  • \\s+/:匹配单词后面的空白字符和最后的"/"
  • \\1:替换为第一个捕获组的内容,也就是目标单词

用stringr包更直观提取

如果习惯用stringr工具包,可以用正向前后查直接定位目标:

library(stringr)
x = "Hello   how are    you Peter /"
x = str_extract(x, "(?<=you\\s+)\\w+(?=\\s+/)")

正则说明:

  • (?<=you\\s+):正向后查,确保前面是"you"加空白
  • \\w+:匹配目标单词
  • (?=\\s+/):正向预查,确保后面是空白加"/"

你之前写法的问题

sub(" you*/.", "", x) 里的错误点:

  • you* 是匹配"yo"加上任意数量的u(比如yoo、youuu),不是匹配"you"之后的内容
  • /. 是匹配"/"加任意一个字符,完全不符合你要匹配的空白+"/"的场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 16:40:55