gpt4 book ai didi

regex - 使用 gsub 和 regex 提取特定单词

转载 作者:行者123 更新时间:2023-12-01 09:48:53 25 4
gpt4 key购买 nike

跨越上一个问题,我在使用正确的 reg 表达式语法来隔离特定单词时遇到了问题。

给定一个数据框:

DL<-c("Dark_ark","Light-Lis","dark7","DK_dark","The_light","Lights","Lig_dark","D_Light")
Col1<-c(1,12,3,6,4,8,2,8)
DF<-data.frame(Col1)
row.names(DF)<-DL

我正在寻找从行名称中提取所有“Dark”和“Light”(忽略大写与小写),并创建仅包含字符串“Dark”或“Light”的第二列
Col2<-c("Dark","Light","dark","dark","light","Light","dark","Light")
DF$Col2<-Col2

Col1 Col2
Dark_ark 1 Dark
Light-Lis 12 Light
dark7 3 dark
DK_dark 6 dark
The_light 4 light
Lights 8 Light
Lig_dark 2 dark
D_Light 8 Light

我已经稍微更改了原始数据以详细说明我当前的问题,但是从 Tyler Rinker 那里得到了一个很好的答案,我使用了这个:
DF$Col2<-gsub("[^dark|light]", "", row.names(DF), ignore.case = TRUE)

但是 gsub 被一些共同的字母绊倒了。搜索留言板以使用正则表达式隔离确切的单词,看起来答案应该是使用双斜杠
\\<light\\>

或者
\\blight\\b

那么为什么这条线
DF$Col2<-gsub("[^\\<dark\\>|\\<light\\>]", "", row.names(DF), ignore.case = TRUE)

不拉上面所需的列?相反,我得到
          Col1    Col2
Dark_ark 1 Darkark
Light-Lis 12 LightLi
dark7 3 dark
DK_dark 6 DKdark
The_light 4 Thlight
Lights 8 Light
Lig_dark 2 Ligdark
D_Light 8 DLight

最佳答案

这个怎么样?

unlist(regmatches(rownames(DF), gregexpr("dark|light", rownames(DF), ignore.case=TRUE)))
# [1] "Dark" "Light" "dark" "dark" "light" "Light" "dark" "Light"

或者
gsub(".*(dark|light).*$", "\\1", row.names(DF), ignore.case = TRUE)
# [1] "Dark" "Light" "dark" "dark" "light" "Light" "dark" "Light"

关于regex - 使用 gsub 和 regex 提取特定单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17913571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com