如何仅提取R

时间:2019-06-05 09:59:48

标签: r regex

我正在尝试从某些html中提取模式。我正在使用纵梁。

我有一个数字列表,例如nums<-c(">00324R<",">E223143<",">00000F<")  我尝试过str_extract(nums,">[A-Z0-9]{4,}?<")提取我想要的模式(">00324R<" ">E223143<" ">00000F<"),但是我不想提取<或>

我知道积极的前瞻可能是这里的答案,但是我似乎无法创建一个可行的方法,我不确定为什么不这样做。我尝试过:

str_extract(nums,"(?<=<)[A-Z0-9]{4,}?<")

3 个答案:

答案 0 :(得分:2)

使用以下正则表达式

> str_extract(nums,"(?<=>)[A-Z0-9]{4,}(?=<)")
[1] "00324R"  "E223143" "00000F" 

详细信息

  • (?<=>)-与后面紧跟>的位置相匹配的正向外观
  • [A-Z0-9]{4,}-四个或更多大写ASCII字母或数字
  • (?=<)-与位置相匹配的正向超前查询,后跟<

请参见regex demo和正则表达式图:

enter image description here

答案 1 :(得分:1)

如果您的字符串非常一致,则可以选择非><之外的任何内容:

str_extract(nums, "[^<>]+")
# [1] "00324R"  "E223143" "00000F"

gsub()将它们移走:

gsub("[<|>]", "", nums)

答案 2 :(得分:0)

您可以按如下所示删除“ <”或“>”:

gsub(“ [<|>]”,“”,数字