【发布时间】:2020-06-17 13:43:53
【问题描述】:
我在 R 中有一个字符串:
c("FLT1", "FLT1P1", "FLT1-FLT2", "SGY-FLT1, GPD")
我想保留所有具有 FLT1 但在添加其他 字母数字 字符时的匹配项。换句话说,我想保留除第二个之外的所有条目,因为它们都提到了 FLT1,但第二个提到了 FLT1P1。
当我使用 str_detect 时,它会将所有内容都返回为 true:
str_detect(string, "FLT1")
[1] TRUE TRUE TRUE TRUE
谁能建议只退回提到 FLT1 的项目的最佳方法?
【问题讨论】:
-
你可以锚定你的正则表达式
-
不要将正则表达式用于全字符串完全匹配。
string == "FLT1" -
如果我使用 string == "FLT1" 它会错过诸如 "FLT1-FLT2" 之类的条目
-
好的,所以当你使用 “但不是在添加其他字符时” 时,你的字符定义中似乎没有包含
"-"。您的意思是“但不是在添加其他字母时”? “......不是其他字母和数字”? “除了“-”之外还有别的吗?还有别的吗? -
你可以试试
str_detect(string, "FLT1(\\W|$)"),在FLT1之后不指定字母数字字符(即不是字母数字或字符串结尾的字符)