首页 > 解决方案 > 在 R 中的多个字符串中选择可变长度的字符串

问题描述

我需要一个函数或更可能是一个正则表达式脚本,它允许我根据条件挑选文本字符串。

例子:

Input <- c("Red1 Orange", "Yellow Green2", "Blue3 Violet")

导致:“Red1”、“Green2”、“Blue3”

我尝试了多种选择,包括:

str_extract(NamesCor, "[a-z][a-z][a-z][a-z][0-9]|
            [a-z][a-z][a-z][0-9]|
            [a-z][a-z][0-9]")

返回 reen2, blue3

标签: rregexstring

解决方案


您可以使用

stringr::str_extract(Input, "\\b[A-Za-z]+\\d+\\b")
stringr::str_extract(Input, "\\b\\p{L}+\\d+\\b")   # A Unicode aware version

请参阅R 演示

Input <- c("Red1 Orange", "Yellow Green2", "Blue3 Violet")
library(stringr)
str_extract(Input, "\\b[A-Za-z]+\\d+\\b")
## [1] "Red1"   "Green2" "Blue3" 

另请参阅正则表达式演示。细节:

  • \b- 单词边界
  • [A-Za-z]+- 1+ ASCII 字母(\p{L}匹配任何 Unicode 字母)
  • \d+- 1+ 位数
  • \b- 单词边界

推荐阅读