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

R语言gsub删除{}内内容与点开头词汇报错解决方案

问题根源

你写的正则无法运行、匹配失败有三个核心原因:

  • 大括号{在正则语法中是表示匹配重复次数的特殊元字符,直接书写{不会被识别为字面量的左大括号符号,会触发正则语法错误,必须加转义符。R的字符串中写正则转义需要用双反斜杠\\。
  • 你写的^[.]\w*里的^是锚定整个字符串起始位置的元字符,只能匹配文本最开头的点号内容,完全匹配不到文本中间出现的.toc、.25em这类内容。
  • 默认正则模式下.*是贪婪匹配,且惰性匹配.*?需要启用perl兼容正则模式才会生效,否则会出现从第一个{一直匹配到最后一个}的跨范围匹配问题。
正确实现代码

按顺序执行两次替换即可覆盖你要删除的所有内容,最后可选清理多余空白:

# 原始文本定义
text<-"\n\n\n\n\nThe Project Gutenberg eBook of Moby Dick; Or the Whale, by Herman Melville\n\n\n\n    body {margin-left:15%; margin-right:15%; text-align:justify }\n    p { text-indent: 1em; margin-top: .25em; margin-bottom: .25em; }\n    H1,H2,H3,H4,H5,H6 { text-align: center; margin-left: 15%; margin-right: 15%; }\n    hr  { width: 50%; text-align: center;}\n    blockquote {font-size: 100%; margin-left: 0%; margin-right: 0%;}\n    .mynote    {background-color: #DDE; color: #000; padding: .5em; margin-left: 10%; margin-right: 10%; font-family: sans-serif; font-size: 95%;}\n    .toc       { margin-left: 10%; margin-bottom: .75em;}\n    pre        { font-family: times new roman; font-size: 100%; margin-left: 10%;}\n\n"

# 1. 移除所有大括号及内部包裹的全部内容
text_processed <- gsub("\\{.*?\\}", "", text, perl = TRUE)
# 2. 移除所有.开头的内容,覆盖.toc、.mynote、.25em、.5em这类场景
text_processed <- gsub("\\.[A-Za-z0-9]+", "", text_processed, perl = TRUE)
# 可选:清理多余的连续空格、换行、缩进
text_processed <- trimws(gsub("\\s+", " ", text_processed))
处理结果

执行完上述代码后,输出结果为:

[1] "The Project Gutenberg eBook of Moby Dick; Or the Whale, by Herman Melville body p H1,H2,H3,H4,H5,H6 hr blockquote pre"

如果你不需要保留CSS选择器部分的body/p/pre这类标签,可以再加一步规则过滤对应位置的内容即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 02:15:41