r - 如何提取R中括号内的文本?
问题描述
如何提取包含名称和年份的所有括号?
string="testo(antonio.2018).testo(antonio).testo(giovanni,2018).testo(2018),testo(libero 2019)"
所需的输出如下所示:
"(antonio.2018)" "(giovanni,2018)" "(libero 2019)"
我不想提取 (2018) 和 (antonio)
解决方案
您可以使用此正则表达式模式str_extract_all
从stringr
包中使用:
stringr::str_extract_all(string,
"\\(\\w+([[:punct:]]{1}|[[:blank:]]{1})[[:digit:]]+\\)")
# [[1]]
# [1] "(antonio.2018)" "(giovanni,2018)" "(libero 2019)"
正则表达式的一个小描述:
\\w
将匹配任何单词-字符
+
意味着它必须至少匹配一次
[[:punct:]]
将匹配任何标点字符
{1}
将恰好出现一次
(....|....)
表示一种模式或必须满足另一种表示
[[:blank:]]
必须出现任何空格
[[:digit:]]
意味着必须出现任何数字 必须
\\(
退出大括号.
推荐阅读
- ruby-on-rails - Rails "app" 目录似乎与 Docker 容器 "app" 目录混淆了,导致 webpacker 在错误的位置查找清单。我应该怎么办?
- angular - 将 Angular App 部署到 Azure 时(在 VS Code 中使用“部署到 Azure”扩展)m environment.ts 设置被替换
- javascript - 如何使用先前状态更新字符串的状态
- c++ - windows文件映射上的多个变量到一个共享内存中
- python - Pandas Dask:使用 groupby.apply 执行滚动求和时“ValueError:索引必须是单调的”
- python - 高效地打印和读取 Numpy 数组
- javascript - 将ajax表单数据发送到php的问题
- swift - 单个 UICollectionViewCells 的自定义边距和限制
- microsoft-graph-api - Graph API:$filter 不支持逻辑否定“NOT”吗?
- c# - Blazor aync 方法未完全执行