如何从相反方向在R中执行模式匹配?

MAP*_*APK 3 regex r

我有一个名为mystring. 我想通过从后向匹配第一个分隔符“_”来删除字符并获取result.

mystring<- c("apple_tar", "banana_bag_cool", "mango_mellow_yellow_sweet")
Run Code Online (Sandbox Code Playgroud)

结果

"apple"  "banana_bag"   "mango_mellow_yellow"
Run Code Online (Sandbox Code Playgroud)

Dav*_*urg 5

类似的方法是将每个字符串分成两组,只提取第一个

sub("(.*)(_.*)", "\\1", mystring)
## [1] "apple"               "banana_bag"          "mango_mellow_yellow"
Run Code Online (Sandbox Code Playgroud)

.*将匹配任何内容并将其放入第一组,直到遇到最后一组_并将所有内容放入第二组。这种方法为您提供了更多的控制权,因为您可以通过指定\\1\\2