在R中查找字母数字

时间:2017-10-07 12:09:28

标签: r stringr

我有俄语的字符向量。请参阅下面的示例向量 -

x = "nНозологические единицы  \r\n В20 Болезнь, вызванная вирусом иммунодефицита человека [ВИЧ], проявляющаяся в виде  \r\nинфекционных и паразитарных болезней \r\n В21 Болезнь, вызванная вирусом иммунодефицита человека [ВИЧ], проявляющаяся в виде \r\nзлокачественных новообразований \r\n В22 Болезнь, вызванная вирусом иммунодефицита человека [ВИЧ], проявляющаяся в виде \r\nдругих уточненных болезней \r\n В78.1 Болезнь, вызванная вирусом иммунодефицита человека [ВИЧ], проявляющаяся в виде \r\nдругих состояний \r\n В24 Болезнь, вызванная вирусом иммунодефицита человека [ВИЧ], неуточненная \r\n Z21 Бессимптомный инфекционный статус, вызванный вирусом иммунодефицита человека"

我想提取这些值 - B20,B21,B22,B78.1,B24,Z21 。我使用下面的代码 -

gsub("[^0-9A-Za-z///' ]", "", x)

但是它返回了错误的结果。

[1] "n    20     21     22   781      24         Z21       "

2 个答案:

答案 0 :(得分:1)

这是一个基本R方法,使用regmatches返回位置,unlist(regmatches(x, gregexpr("[ВZ][27][[:digit:].]+", x))) [1] "В20" "В21" "В22" "В78.1" "В24" "Z21" 提取文本的匹配部分。

utfToInt

请注意,“B”不是标准的ascii“B”。我从矢量中复制并粘贴了一个以使其工作。您可以使用utf8ToInt("B") [1] 66

查看此信息

ascii“B”:

utf8ToInt("В")
[1] 1042

x中的“B”

<button type="button" name="<?php echo'edit[$i]'; ?>" class="btn btn-primary">Edit</button>

答案 1 :(得分:1)

使用stringr,您可以将str_extract_all与此正则表达式一起使用

x = "nНозологические единицы  \r\n В20 Болезнь, вызванная вирусом иммунодефицита человека [ВИЧ], проявляющаяся в виде  \r\nинфекционных и паразитарных болезней \r\n В21 Болезнь, вызванная вирусом иммунодефицита человека [ВИЧ], проявляющаяся в виде \r\nзлокачественных новообразований \r\n В22 Болезнь, вызванная вирусом иммунодефицита человека [ВИЧ], проявляющаяся в виде \r\nдругих уточненных болезней \r\n В78.1 Болезнь, вызванная вирусом иммунодефицита человека [ВИЧ], проявляющаяся в виде \r\nдругих состояний \r\n В24 Болезнь, вызванная вирусом иммунодефицита человека [ВИЧ], неуточненная \r\n Z21 Бессимптомный инфекционный статус, вызванный вирусом иммунодефицита человека"

stringr::str_extract_all(x, "[:alpha:][[:digit:]\\.]+")
#> [[1]]
#> [1] "В20"   "В21"   "В22"   "В78.1" "В24"   "Z21"  

关于正则表达式:

  • [:alpha:]表示任何字母字符
  • [[:digit:]\\.]后跟任何数字或.字符
  • +前一次或多次

当您要提取的内容发生更改时更改正则结构