我有一些线

string <- "Shakira - Wolf - 02.Hips don't lie.mp3"

我只需要第一部分,所以是艺术家的名字。我这样使用正则表达式
stri_extract_all_regex(string, "^.*?-")

输出:"Shakira -"。但我不要" -"。如何编写正则表达式,使我只能采用第一个" -"之前的子字符串?

最佳答案

否定的字符类方法成功:

> stri_extract_all_regex(string, "^[^-]+")
[[1]]
[1] "Shakira "

受到另一大卫的挑战,我现在尝试仅选择字母字符之间的空格,但也要使用该功能,因此要使用“正”选择策略:
string <- "Shakira and Friends - Wolf - 02.Hips don't lie.mp3"
stri_extract_all_regex(string, "^[[:alpha:]]+( *[[:alpha:]])*")
[[1]]
[1] "Shakira and Friends"

09-27 18:14