我想使用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”之前结束吗?
答案 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"