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

如何按特定交替序列拆分R语言中的字符串?

R语言实现「2个字符、1个字符交替」的动态字符串拆分

要实现按「先2个字符、再1个字符、循环交替」的规则拆分字符串,且无需预先统计字符长度,可以利用PCRE正则的正向零宽断言,结合位置匹配来动态识别拆分点。

实现代码

strsplit("ABCDEFG", "(?<=..)(?=(.)|$)|(?<=.(?=(..)|$))", perl = TRUE)

运行结果

执行后会得到期望的输出:

[[1]]
[1] "AB" "C"  "DE" "F"  "G" 

正则逻辑说明

  • (?<=..)(?=(.)|$):匹配两个字符末尾的位置,且该位置后至少还有1个字符(或到字符串结尾),用于拆分出"AB""DE"这类双字符片段
  • (?<=.(?=(..)|$)):匹配单个字符末尾的位置,且该位置后至少还有2个字符(或到结尾),用于拆分出"C""F"这类单字符片段
    两个规则组合后,会自动按「2个→1个→2个→1个」的循环模式遍历字符串,剩余的不足规则长度的字符(如最后的"G")也能被正确保留。

等价写法

也可以用另一种正则表达式实现相同效果:

strsplit("ABCDEFG", "(?<=(?:..)(?:.(..))*)|(?<=(?:.(..))*.)", perl = TRUE)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 19:23:14