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

如何在R中从多份Word文档批量提取引号内容并解决多引号匹配错误问题

问题原因

你当前使用的正则逻辑存在匹配错位:(?<=").*?(?=")会按顺序捕获所有前后为双引号的片段,第一个引号对的右引号会被识别为下一次匹配的左引号边界,因此会误捕获两个独立引号对之间的非引用内容。

修正代码

只需修改提取引号部分的逻辑,先匹配完整的双引号包裹片段,再去除首尾的双引号即可:

library(readtext)
library(stringr)

#' 存储文章的文件夹路径
path <- "articles"

#' 读取所有docx文件
mydata <-
  readtext(paste0(path, "\\*.docx")) 

#' 替换弯引号为直引号
mydata$text <- gsub("/’", "/'", mydata$text, ignore.case = TRUE)
mydata$text <- gsub("[“”]", "\"", gsub("[‘’]", "'", mydata$text))

#' 提取引号内容:先匹配完整引号对,再去除首尾引号
result <- stringi::stri_extract_all_regex(str = mydata$text, pattern = '"[^"]*"')
result <- lapply(result, function(x) gsub('^"|"$', '', x))

效果验证

修改后第一份文档的输出结果为:
[[1]]
[1] "We got him and he is healthy,"
[2] "I adore tigers"
符合预期提取要求。

如果需要同时提取单引号包裹的内容,只需将正则改为["'][^"']*["']即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 02:36:04