gpt4 book ai didi

r - 使用 strsplit 正则表达式拆分文本

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

其实我想提取"b" , "d" & "f"来自 "abcdef" .我这样做:

strsplit("abcdef", "[ace]")

但它返回一个额外的 "" .喜欢:

"" "b" "d" "f"

要做什么?我应该在此表达式中更改什么?并请解释你的解决方案是如何工作的......我试过str_extract尽管。有效。但我想知道为什么这不适用于 strsplit .

enter image description here

最佳答案

当你拆分一个字符串时,你在结果中得到的项目是出现在匹配之间的字符串的所有部分,如果匹配结果是在字符串的开头/结尾,即使是空字符串也是如此。查看您拥有的字符串,其中 - 用匹配项标记一个空位置:

-a-b-c-d-e-f-
1| 2 | 3 | 4

由于最后一个匹配在f之前,所以不包括尾随空字符串,但是如果将f包含到字符集中,您将得到一个空尾随元素:

strsplit("abcdef", "[acef]")
## => [1] "" "b" "d" ""

更多,如果你的匹配项看起来是相邻的,你也会得到空元素:

strsplit("abcdef", "[abc]")
## => [1] "" "" "" "def"

因此,每当您使用正则表达式拆分字符串时,您几乎总是会得到空字符串。

您实际上可以将您的字符串与“倒置”模式匹配:

x <- "abcdef"
regmatches(x, gregexpr("[^ace]+", x))
## => [1] "b" "d" "f"

参见 R demo .或者,您可以在找到匹配项后删除空项目(请参阅 Rui Barradas answer )。

关于r - 使用 strsplit 正则表达式拆分文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51781444/

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