我真的不知道如何在R中使用不匹配的正则表达式正确地找到单词
例如:数据包括:
x = c("hail", "small hail", "wind hail", "deep hail", "thunderstorm hail", "tstm wind hail", "gusty wind hail", "late season hail", "non severe hail", "marine hail")
我想查找所有具有“雹”但没有“海洋”的Obs
我的尝试:
x[grep("[^(marine)] hail", x)]
->我只有5个:
"small hail" "wind hail" "deep hail" "tstm wind hail" "gusty wind hail"
我不知道其他4个会发生什么
使用环视断言。
> x = c("hail", "small hail", "wind hail", "deep hail", "thunderstorm hail", "tstm wind hail", "gusty wind hail", "late season hail", "non severe hail", "marine hail")
> x[grep("^(?=.*hail)(?!.*marine)", x, perl=TRUE)]
[1] "hail" "small hail" "wind hail"
[4] "deep hail" "thunderstorm hail" "tstm wind hail"
[7] "gusty wind hail" "late season hail" "non severe hail"
要么
\b
如有必要,添加边界。\b
单词字符和非单词字符之间的匹配。
> x[grep("^(?=.*\\bhail\\b)(?!.*\\bmarine\\b)", x, perl=TRUE)]
^
断言我们处于起步阶段。
(?=.*hail)
断言匹配必须包含字符串的正向超前 hail
(?!.*marine)
断言匹配不包含字符串的否定的超前行为marine
。
因此,仅当两个条件都满足时,上述正则表达式才匹配起始锚点或行的起点。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句