提取R

时间:2019-03-30 10:23:39

标签: r regex

我想使用RStudio在两个标点之间提取一组字符串。

我尝试使用str_extract命令,但是每当我尝试使用锚点时(^代表开始的char,$代表结束的char),都会失败。

这是示例问题:

> text <- "Name : Dr. CHARLES DOWNING MAP ; POB : London; Age/DOB : 53 years / August 05, 1958;"

这是我使用的示例代码:

> str_extract(text,"(Name : )(.+)?( ;)")  
> str_match(str_extract(text,"(Name : )(.+)?( ;)"),"(Name : )(.+)?( ;)")[3]

但是它似乎太冗长,而且不够灵活。

我只想提取"Dr. CHARLES DOWNING MAP"

任何人都可以帮助解决我的问题吗?

我可以告诉正则表达式在“名称:”之后以任何非空格字符开头,并在“; POB”之前结束吗?

2 个答案:

答案 0 :(得分:2)

这似乎可行。

> gsub(".*Name :(.*) ;.*", "\\1", text)
[1] " Dr. CHARLES DOWNING MAP"

答案 1 :(得分:1)

使用str_match

stringr::str_match(text, "^Name : (.*) ;")[, 2]
#[1] "Dr. CHARLES DOWNING MAP"

[, 2]用于从捕获组中获取内容。


还有qdapRegex::ex_between可以提取左右标记之间的字符串

qdapRegex::ex_between(text, "Name : ", ";")[[1]]
#[1] "Dr. CHARLES DOWNING MAP"