r - 根据模式从字符串创建子字符串,并将模式保留在子字符串中
问题描述
是否可以根据匹配单词的模式从字符串创建子字符串但也保留匹配部分?
a <- "contrainte que ilz ne contraint Que ris et jeux mais ne contrainte que jamais on ne contrainte que vous ne contraindre que de ne contraint que l' amour ne contraint que je ne contrainte que je ne contraint que je ne contrainte que l' homme arrive à ne contraint que nous ne contrainte que je ne contraintes que le créateur ne contrainte que l' opium même ne"
当模式存在“cont”时,我很想拆分字符串。
strsplit(a, "cont", perl = T)
[1] "" "rainte que ilz ne " "raint Que ris et jeux mais ne " "rainte que jamais on ne "
[5] "rainte que vous ne " "raindre que de ne " "raint que l' amour ne " "raint que je ne "
[9] "rainte que je ne " "raint que je ne " "rainte que l' homme arrive à ne " "raint que nous ne "
[13] "rainte que je ne " "raintes que le créateur ne " "rainte que l' opium même ne"
我想做的是完全相同的,但将匹配部分保留在子字符串中。
谢谢!
解决方案
您可以使用stringr::str_split
with lookaheads
,例如:
stringr::str_split(a, "(?=cont)")[[1]]
Lookarounds 是零宽度断言,这意味着它们不吃任何字母,所以在这里: Positive lookahead 可以匹配任何东西(?= anyword ) 匹配任何后面跟着anyword的东西,
输出:
stringr::str_split(a, "(?=cont)")[[1]]
[1] ""
[2] "contrainte que ilz ne "
[3] "contraint Que ris et jeux mais ne "
[4] "contrainte que jamais on ne "
[5] "contrainte que vous ne "
[6] "contraindre que de ne "
[7] "contraint que l' amour ne "
[8] "contraint que je ne "
[9] "contrainte que je ne "
[10] "contraint que je ne "
[11] "contrainte que l' homme arrive à ne "
[12] "contraint que nous ne "
[13] "contrainte que je ne "
[14] "contraintes que le créateur ne "
[15] "contrainte que l' opium même ne"
推荐阅读
- javascript - 读取一个 Excel 文件并在每个返回的行上执行一个脚本 - NodeJS/Javascript
- reactjs - redux 挂钩从 API 获取数据,并在单独的文件中执行操作
- android - 手动使用调试密钥签署未签名的 APK
- javascript - Discord.js 机器人从不同的 reddit 发送两个模因
- angular - Angular - 无法在“XMLHttpRequest”上执行“打开”:无效的 URL
- chart.js - ChartJS - 想要创建一个带有水平条和一个点的混合图表来表示当前用户的答案
- ios - 单元格突出显示默认图像而不是实际图像
- javascript - 如何根据另一列值在.JS中的表列中放置条件
- sql - SQL(BigQuery) 使用 lag() 函数连接两个表
- swift - 在更新的 Swift 5 / SwiftUI 2 项目中构建单元测试时出现链接器错误