gpt4 book ai didi

regex - R,第n次出现之前的所有内容的正则表达式

转载 作者:行者123 更新时间:2023-12-04 22:29:21 24 4
gpt4 key购买 nike

s <- "1-343-43Hello_2_323.14_fdh-99H"

在R中,我想使用正则表达式在下划线(例如2nd)之前获取子字符串。如何用一个正则表达式来完成呢?另一种方法是用“_”分隔,然后粘贴前两个-沿某个方向移动;
paste(sapply(strsplit(s, "_"),"[", 1:2), collapse = "_")

给出:
[1] "1-343-43Hello_2"

但是,我怎样才能使正则表达式表达出同样的效果呢?

最佳答案

您可以使用sub:

sub("^([^_]*_[^_]*).*", "\\1", s)

regex demo

R code demo:
s <- "1-343-43Hello_2_323.14_fdh-99H"
sub("^([^_]*_[^_]*).*", "\\1", s)
## => [1] "1-343-43Hello_2"

模式详细信息:
  • ^-字符串
  • 的开始
  • ([^_]*_[^_]*)-组1捕获除_之外的0+个字符,然后捕获一个_,再捕获0+个非_
  • .*-字符串的其余部分(请注意,TRE正则表达式.也匹配换行符)。
  • \\1替换仅返回组1中的值。

    关于regex - R,第n次出现之前的所有内容的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38374927/

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