【问题标题】:Lookahead in regular expression正则表达式中的前瞻
【发布时间】:2015-05-08 14:31:15
【问题描述】:

我正在尝试使用正则表达式来提取第一个“/”出现之前的字符串部分。在以下示例中,初始字符串是“原子分组/所有格限定符/条件和递归模式”,我想得到“原子分组”

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

我尝试了以下方法,但它匹配字符串直到出现last“/”(它返回“原子分组/所有格限定符”)

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

任何帮助将不胜感激。

【问题讨论】:

    标签: regex r lookahead


    【解决方案1】:

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

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

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

    RegEx Demo

    【讨论】:

    • 谢谢。当没有“ / ”时,您能否提供修改以获取整个字符串?
    • 谢谢,但我不想排除“/”,只排除“/”。例如,如果字符串中有一个“和/或”(在第一个“/”之前)我不希望它被排除
    【解决方案2】:

    你可以在?之后使用“懒惰”+

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

    【讨论】:

    • 谢谢。当没有“ / ”时,您能否提供修改以获取整个字符串?
    • 谢谢,但我不想排除“/”,只排除“/”。例如,如果字符串中有一个“和/或”(在第一个“/”之前)我不希望它被排除
    猜你喜欢
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 2010-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多