【问题标题】:Extract Text Starting and Ending with Punctuations in R [duplicate]在R中提取以标点符号开头和结尾的文本[重复]
【发布时间】: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”之前结束吗?

【问题讨论】:

    标签: r regex


    【解决方案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"
    

    【讨论】:

      猜你喜欢
      • 2018-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-08
      • 1970-01-01
      • 2017-04-18
      相关资源
      最近更新 更多