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

求可提取字母、数字、$、单双引号的R str_extract_all正则表达式

解决R中提取指定字符序列的正则问题

嘿,刚接触R没几天就撞上正则这个“硬骨头”太正常了——我当初第一次摸正则的时候也挠了好半天头😅。针对你朴素贝叶斯垃圾邮件预测项目里的需求,我直接给你落地的解决方案:

正则表达式与代码示例

你需要的正则要匹配仅由大小写字母、数字、$、单引号、双引号组成的连续序列,对应的正则表达式和R代码如下:

library(stringr)

# 替换成你的实际垃圾邮件文本
sample_spam_text <- 'Click "here$now" to win 1000$! Don\'t miss this \'limited_offer\' today!'

# 提取目标序列
target_sequences <- str_extract_all(sample_spam_text, '[a-zA-Z0-9$"\']+')[[1]]

# 查看提取结果
print(target_sequences)

运行后会得到这样的输出:

[1] "Click"          "\"here$now\""   "to"             "win"           
[5] "1000$"          "Don't"          "miss"           "this"          
[9] "'limited_offer'" "today!"

正则逻辑拆解

我给你拆解开这个正则的每个部分,方便你理解:

  • [a-zA-Z0-9$"\']:这是字符集,明确列出了所有允许出现的字符:
    • a-zA-Z:覆盖大小写英文字母
    • 0-9:所有数字
    • $:美元符号(在方括号里不需要转义,只有在方括号外才表示行尾)
    • " 和 ':单双引号(用单引号包裹整个正则时,双引号不需要转义,单引号则要加反斜杠转义)
  • +:表示匹配一个或多个连续的上述字符,确保提取的是完整的序列,而不是单个字符

针对你项目的补充说明

因为你要区分包含单/双引号的序列,这个正则会完整保留序列里的引号标记(比如"here$now"和'limited_offer'会被完整提取),完全满足朴素贝叶斯模型对特征区分的需求。如果后续遇到特殊文本(比如引号嵌套?不过垃圾邮件里这种情况很少),可以再调整,但当前这个正则已经能覆盖绝大多数场景了。

内容的提问来源于stack exchange,提问作者Audrius Užkuraitis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:57:03