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

如何使用stringr::word提取撇号外特殊字符前的字符串?

解决方案

针对你的需求,核心是仅以“/”作为分隔符提取前面的内容,而非用所有标点分割。以下是两种简单有效的实现方法:

方法1:调整word()函数的分隔符

直接指定分隔符为"/",替换掉匹配所有标点的正则类[[:punct:]]:

text <- "Il n’a pas réussi à répondre à votre plainte/question et ne vous a pas orienté ailleurs"
word(text, sep = "/")

执行结果:

[1] "Il n’a pas réussi à répondre à votre plainte"

该方法会保留字符串中的其他特殊字符(如撇号、逗号、分号等),仅按“/”分割并提取第一部分,完全适配批量处理需求。

方法2:用基础R的strsplit()函数

如果需要处理多个字符串组成的向量,这个方法更灵活:

text_vec <- c(
  "Il n’a pas réussi à répondre à votre plainte/question et ne vous a pas orienté ailleurs",
  "Exemple, avec des virgules;/et des points-virgules"
)
sapply(strsplit(text_vec, "/"), `[`, 1)

执行结果:

[1] "Il n’a pas réussi à répondre à votre plainte" "Exemple, avec des virgules;"

之前代码出错的原因

你使用的[[:punct:]]是正则表达式中匹配所有标点符号的类别,其中包含了法语里的撇号(’),因此会在撇号位置也分割字符串,导致结果不符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 08:48:18