【发布时间】:2021-03-02 15:08:12
【问题描述】:
那里有很多正则表达式问题,但我无法以优雅的方式解决以下问题。
我有以下向量,想只提取方括号内的数字,即不包括方括号本身。数字可能是负数。问题也可能是:
如何从{stringr}包中只提取first capturing group函数str_extract?
string <- c("[1] cate 1", "[-1] cate -1", "[2] cate 2")
stringr::str_extract(string = string, pattern = "\\[[^:digit:]+\\]")
[1] "[1]" "[-1]" "[2]"
stringr::str_extract(string = string, pattern = "\\[[^(:digit:)]+\\]")
[1] "[1]" "[-1]" "[2]"
我还尝试将\\1 附加到模式以提取第一组并得到以下错误:
stringr::str_extract(string = string, pattern = "\\[[^(?:digit:)]+\\]\\1")
Error in stri_extract_first_regex(string, pattern, opts_regex = opts(pattern)) :
Back-reference to a non-existent capture group. (U_REGEX_INVALID_BACK_REF)
感谢您抽出宝贵时间,如果此问题重复,我们深表歉意。
【问题讨论】:
-
stringr::str_extract(string, "(?<=\\[)-?\\d+(?=\\])"),见ideone.com/DJyBRM -
太棒了!这可以完成工作。谢谢! (你想把它写成答案,这样我就可以结束这个问题了吗?)