r - 提取一个子字符串,其中它旁边的字符使用 r 中的正则表达式变化
问题描述
我有一些像下面这样的字符串。我需要从字符串中提取颜色部分。
s1= 'color: red greenSize: 2 CountVerified Purchase'
s2= 'color: red greenVerified Purchase'
s3= 'color: red greenSize: 2 Count'
s4= 'color: red green'
我str_replace
像下面这样使用。它仅适用于s1
和s3
。不为s2
和s4
。
str_replace(s1, 'color:\\s(.*)Size:\\s.*', '\\1')
有谁知道我如何从适用于所有 4 种情况的字符串中提取颜色?
解决方案
这是我使用 的尝试regmatches
,以及以下正则表达式模式:
color: (\\S+) (\\S+)(?=Size|Verified|$)
这隔离了第一种和第二种颜色,第二种颜色的结尾由字符串结尾的单词Size
或, 给出。Verified
x <- c("color: red greenSize: 2 CountVerified Purchase",
"color: red greenVerified Purchase",
"color: red greenSize: 2 Count",
"color: red green")
sapply(x, function(x) {
result <- regmatches(x, regexec("color: (\\S+) (\\S+)(?=Size|Verified|$)", x, perl=TRUE))[[1]]
c(result[2], result[3])
})
这输出(有点乱):
color: red greenSize: 2 CountVerified Purchase
[1,] "red"
[2,] "green"
color: red greenVerified Purchase color: red greenSize: 2 Count
[1,] "red" "red"
[2,] "green" "green"
color: red green
[1,] "red"
[2,] "green"
推荐阅读
- android - 为汽车修改 AOSP ( Android-Source ) 的系统主题
- python - 如何在 python 中使用 pandas 计算 csv 文件中的唯一行数
- wso2 - 超时问题 - http-incoming-1 套接字超时:180000 远程地址:/127.0.0.1:59531
- macos - 如何使用 VIM(buffer) 快速编辑剪贴板内容
- c# - 抽象类和继承类中的接口
- graph - Elm:如何用时间戳绘制线性图
- sql - 如何在pyspark中使用具有相同客户ID的新数据框的值更新一行旧数据框
- c# - 尝试将数据上传到我的数据库时,“列名或提供的值的数量与表定义不匹配”
- ubuntu - 如何在 ubuntu 中构建外部模块?
- c# - .Net core 3.1 worker 服务自包含发布在 vs 2019 中失败