【问题标题】:Unexpected regex behavior when executed in base R [duplicate]在基本 R 中执行时出现意外的正则表达式行为 [重复]
【发布时间】:2021-04-17 15:21:43
【问题描述】:

根据link,我编写了一个正则表达式,在 R 中为特定字符串执行时没有给出预期结果:

string <- "0,9% BB"
regex  <- "^ ?\\d+[\\d ,\\.]*[B-DF-HJ-NP-TV-Z\\/]*%?"   
grep(regex, string, value = T, perl = T)

结果输出为

 [1] "0,9% BB"

而不是期望的(并由链接输出)

[1] "0,9%"

我缺少什么来获得所需的输出?请最好以R为基础。

【问题讨论】:

    标签: r regex


    【解决方案1】:

    这仅使用基本 R 来返回“0,9%”

    string <- "0,9% BB"
    regex  <- "^ ?\\d+[\\d ,\\.]*[B-DF-HJ-NP-TV-Z\\/]*%?"
    regmatches(x = string, m = regexpr(regex,string,perl = TRUE))
    

    【讨论】:

    • 太好了,谢谢。但是,我真的不明白为什么在使用 grep () 时它不起作用...
    • 我在想 grep() 如果找到匹配项,它自己会返回整个字符串。
    • 当然! grep("a", "abc", value = T, perl = T) 结果为 "abc"。再次感谢。
    猜你喜欢
    • 2012-07-16
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-14
    • 1970-01-01
    • 2015-11-18
    相关资源
    最近更新 更多