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

R语言如何替换所有段落中特定词后至段落结束的全部内容

问题解决方法

问题原因

原正则^Talk:.*\r仅匹配到\r回车符位置就停止,\r之后的内容未被纳入匹配范围,因此不会被替换,出现fjeaofiz残留。

修正代码

直接用stri_replace_all_regex实现一步替换即可,不需要先定位再赋值,逻辑更简洁:

library(stringi)
# 原始测试数据
x <- c("12 3456 789", "Talk: zpfozefpozjgzigzehgoi oezjgzogzjgoezjgo \r fjeaofiz ", "", NA, "Talk: 667")
# 替换逻辑:匹配以Talk:开头的整段内容替换为***
x <- stri_replace_all_regex(x, "^Talk:.*", "***", dotall = TRUE)
# 输出结果
print(x)

运行后输出结果和期望完全一致:

[1] "12 3456 789" "***"         ""            NA            "***"

参数说明

  • 正则^Talk:.*:匹配所有以Talk:开头的字符串内容
  • dotall = TRUE:让正则中的.可以匹配回车、换行等所有特殊字符,确保从Talk:开始到整段结束的所有内容都被纳入匹配范围

如果要保留先定位再替换的写法,修改定位的正则即可:

stri_sub_all(x, stri_locate_all_regex(x, "^Talk:.*", omit_no_match=TRUE, dotall = TRUE)) <- "***"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 02:15:01