正则表达式中的先行

Lookahead in regular expression

我正在尝试使用正则表达式来提取字符串中第一个“/”出现之前的部分。在下面的例子中,初始字符串是 "Atomic grouping / possessive qualifiers / conditional and recursive patterns" 我想得到 "Atomic grouping"

library(stringr)
var.descr <- "Atomic grouping / possessive qualifiers / conditional and recursive patterns"

我尝试了以下但它匹配字符串直到 last " / " 出现(它 returns "Atomic grouping / possessive qualifiers")

str_extract(var.descr, perl("^.+(?=\s/)"))

如有任何帮助,我们将不胜感激。

您可以像这样使用前瞻性正则表达式:

str_extract(var.descr, perl("^.+?(?= / |$)"))

(?= / |$) 将确保 / 后跟匹配的文本或匹配到输入结束。

RegEx Demo

您可以使用 "lazy" + 和后面的 ?

str_extract(var.descr, perl("^[^/]+"))