gpt4 book ai didi

regex - R获取子字符串和正则表达式?

转载 作者:行者123 更新时间:2023-12-03 16:29:26 25 4
gpt4 key购买 nike

我有一组文件名字符串。我想提取#符号之后但文件扩展名之前的所有字符。例如,文件名之一是:

HelloWorld#you.txt

我想返回字符串 you
这是我的代码:
    hashPos = grep("#", name, fixed=TRUE)
dotPos = length(name)-3
finalText = substring(name, hashPos, dotPos)

我在网上阅读了 grep应该返回出现第一个参数的位置的索引(在本例中为#符号)。因此,我期望上面的方法能奏效,但事实并非如此。

或者我将如何使用正则表达式提取此字符串?
另外,当字符串没有#符号时会发生什么?函数会返回一个特殊值,例如-1吗?

最佳答案

这是一种单线解决方案

gsub(".*\\#(.*)\\..*", "\\1", c("HelloWorld#you.txt"))

输出:
you

为了解释该代码,它将所有内容匹配到 #,然后提取所有单词字符直到 .,因此最终输出将是您要查找的中间字符串。

编辑:

上面的解决方案将文件名匹配到最后一个 .,即允许文件名包含多个点。如果要提取第一个 .之前的名称,则可以改用正则表达式 .*\\#(\\w*)\\..*

关于regex - R获取子字符串和正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15422778/

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