【问题标题】:String Detecting in RR中的字符串检测
【发布时间】:2019-05-07 11:28:30
【问题描述】:

我有以下字符串。

x <- c("A1A1A1", "A3V???", "B4F3**")

我只想标记最后 3 个字符不遵循模式的字符串[[:digit:]][[:alpha:]][[:digit]]

因此,我想标记上面的第二个和第三个字符串。有什么建议?

【问题讨论】:

  • !grepl(".*([[:digit:]][[:alpha:]][[:digit:]])$", x) 标记它们并将为第二个和第三个字符串提供TRUE
  • grep(".*([[:digit:]][[:alpha:]][[:digit:]])$", x, value = TRUE)只返回满足条件的那个:A1A1A1
  • 试试(?:[^\d]..|.[^a-zA-Z].|..[^\d])$,因为不管怎么写,引擎都得走这些步骤,何不就这样写。

标签: r regex string detect stringr


【解决方案1】:

grepl适合这里

> !grepl("\\d\\w\\d$", x)
[1] FALSE  TRUE  TRUE

如果你想获得职位:

> grep("\\d\\w\\d$", x, invert = TRUE)
[1] 2 3

【讨论】:

    【解决方案2】:

    为了澄清起见,您是否要删除那些不遵循该模式的字符串?我能想到的方法是clnstrings &lt;- str_remove_all(vectornameofstrings, "symbols or patterns that you would want removed") 可能有更有效的方法可以做到这一点,但据我所知(这是有限的,因为我仍在学习)这可能是一种方法。如果其他人对此答案有任何意见,请随时发表评论!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多