【问题标题】:Extract text between two strings提取两个字符串之间的文本
【发布时间】:2015-07-20 11:22:37
【问题描述】:

如何提取两个字符串之间的文本。

例如:

x <- "ABCDName:Mr.Praveen KumarDOB"

我要提取Mr. Praveen Kumar

另外,我想从 start 中提取字符串,直到遇到 Name:。

【问题讨论】:

标签: regex r text text-mining text-analysis


【解决方案1】:

试试

gsub('^[^:]+:|[A-Z]{1,}$', '', x)
#[1] "Mr.Praveen Kumar"

sub('Name.*', '', x)
#[1] "ABCD"

【讨论】:

    【解决方案2】:

    你可以试试这个,

    > library(stringr)
    > str_extract(x, perl("Name:\\K.*?(?=[A-Z]{2,})"))
    [1] "Mr.Praveen Kumar"
    > str_extract_all(x, perl("Name:\\K.*?(?=[A-Z]{2,})|.*?(?=Name:)"))[[1]]
    [1] "ABCD"             "Mr.Praveen Kumar"
    

    【讨论】:

    • 错误:不推荐使用 perl。请改用正则表达式
    • @BitanshuDas 在新的stringr中,不需要用perl换行。只需在没有包装的情况下使用,它应该可以正常工作。 str_extract_all(x, "Name:\\K.*?(?=[A-Z]{2,})|.*?(?=Name:)")[[1]] 适合我
    猜你喜欢
    • 2016-08-13
    • 2013-05-14
    • 2018-11-02
    • 1970-01-01
    • 2016-08-02
    • 1970-01-01
    • 1970-01-01
    • 2019-07-02
    相关资源
    最近更新 更多