首页 > 解决方案 > 如何提取R中括号内的文本?

问题描述

如何提取包含名称和年份的所有括号?

string="testo(antonio.2018).testo(antonio).testo(giovanni,2018).testo(2018),testo(libero 2019)"

所需的输出如下所示:

"(antonio.2018)" "(giovanni,2018)" "(libero 2019)"

我不想提取 (2018) 和 (antonio)

标签: rregex

解决方案


您可以使用此正则表达式模式str_extract_allstringr包中使用:

stringr::str_extract_all(string, 
                         "\\(\\w+([[:punct:]]{1}|[[:blank:]]{1})[[:digit:]]+\\)")

# [[1]]
# [1] "(antonio.2018)"  "(giovanni,2018)" "(libero 2019)"  

正则表达式的一个小描述:

\\w将匹配任何单词-字符
+ 意味着它必须至少匹配一次
[[:punct:]]将匹配任何标点字符
{1}将恰好出现一次
(....|....)表示一种模式或必须满足另一种表示
[[:blank:]]必须出现任何空格
[[:digit:]]意味着必须出现任何数字 必须
\\(退出大括号.


推荐阅读