在R中提取以标点符号开头和结尾的文本[重复]
Posted
技术标签:
【中文标题】在R中提取以标点符号开头和结尾的文本[重复]【英文标题】:Extract Text Starting and Ending with Punctuations in R [duplicate] 【发布时间】:2019-08-21 03:56:09 【问题描述】:我想使用 RStudio 提取两个标点符号之间的一组字符串。
我尝试使用 str_extract 命令,但每当我尝试使用锚点(^ 用于开始字符,$ 用于结束字符)时,它都失败了。
这里是示例问题:
> 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"
。
任何人都可以帮助解决我的问题吗?
我可以告诉正则表达式在“Name :”之后以任何非空白字符开头并在“;POB”之前结束吗?
【问题讨论】:
【参考方案1】:这似乎行得通。
> gsub(".*Name :(.*) ;.*", "\\1", text)
[1] " Dr. CHARLES DOWNING MAP"
【讨论】:
就打我吧。我的冒号后面有\\s+
。【参考方案2】:
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"
【讨论】:
以上是关于在R中提取以标点符号开头和结尾的文本[重复]的主要内容,如果未能解决你的问题,请参考以下文章