gpt4 book ai didi

r - gsub,先行后向

转载 作者:行者123 更新时间:2023-12-02 09:15:12 26 4
gpt4 key购买 nike

我有一个包含以下内容的字符串 vector :

Number of source1.2_SPNB.txt
Number of source1.1_SPNB.txt
Number of source1.3_SPNB.txt

我需要在一个新 vector 中提取“source1.1”,“source1.2”和“source1.3”。

this之后,我尝试了:
gsub("(?<=of )(.*)(?=_)", "\\1", string.vector)

但我得到一个错误:

invalid regular expression '(?<=of )(.*)(?=_)', reason 'Invalid regexp'



然后,我尝试:
gsub("(?<=of )(.*)(?=_)", "\\1", string.vector, perl = TRUE)

但是它返回了完全相同的字符串 vector 。

我究竟做错了什么?

最佳答案

有几个问题:

  • perl = TRUE需要使用lookahead / lookbehind
  • ,即使我们使用正则表达式所做的只是用其自身替换所需的子字符串-我们想要做的是匹配整个字符串(而不是使用零宽度的lookahead / lookbehind),然后将整个字符串替换为只是与捕获组匹配的部分。
  • 大概只需要一个替换,所以应该使用
  • 而不是 sub

    解决这些问题,我们得到:
    sub(".*(source.*?)_.*", "\\1", string.vector)

    关于r - gsub,先行后向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47792032/

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