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

R语言中提取第二个下划线与句号之间的文本

提取第二个下划线与点之间文本的修改方案

你的原代码里,(?<=_)(.+)(?=\.)中的.+是贪婪匹配,会从第一个下划线开始把后面所有到点前的内容都捞出来,所以得到了two_three。要拿到第二个下划线和点之间的three,可以用下面两种修改方式,都基于str_extract:

library(stringr)
mytext <- "one_two_three.four"

# 方式1:精准定位第二个下划线
result <- str_extract(mytext, "(?<=_[^_]_)[^.]+")
print(result) # 输出 "three"

# 方式2:直接匹配最后一段非下划线、到点前的内容(更简洁)
result <- str_extract(mytext, "[^_]+(?=\\.)")
print(result) # 输出 "three"

简单说明

  • 方式1里的(?<=_[^_]_)是正向后行断言,确保匹配位置前面是「下划线+非下划线字符+下划线」,也就是精准卡在第二个下划线之后;[^.]+只匹配到点号前的非点字符,不会多拿多余内容。
  • 方式2更直接,[^_]+(?=\.)匹配「后面跟着点号的连续非下划线字符」,正好对应最后一个下划线到点之间的three。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 23:00:17