0
我試圖從tidyr :: extract()表中抽取一個具有多個鍵值的列:值對。我用stringr :: str_view()對正則表達式進行了微調,但是我得到了意想不到的行爲 - tidyr :: extract()似乎與stringr :: str_view()不同的字符串匹配。stringr :: str_view()和tidyr :: extract()正則表達式的區別?
如何修改我對tidyr :: extract()的使用以獲得我想要的行爲?
例如:
library(tidyverse)
library(stringr)
df <- as_data_frame('protein_id "ENSP00000260585.7"; tag "basic"; tag "appris_principal"; tag "CCDS"; tag "seleno"; ccdsid "CCDS46240.1"; havana_gene "OTTHUMG00000151931.3"; havana_transcript "OTTHUMT00000324484.3";')
# match I expect: 'tag "basic"; tag "appris_principal"; tag "CCDS"; tag "seleno"; '
str_view(df$value, '(tag "(?:.+?)"; +)+')
# match I get: 'tag \"seleno\"; '
(df %>% extract(value, "tags", '(tag "(?:.+?)"; +)+', remove = FALSE))$tags
我想設定的4標記物項的提取:值到一個名爲標籤的新列,然後我更整齊些會。但是當我從提取物中得到4對中的1對時,這很難!
我認爲我上面的評論很清楚,但爲了防止翻譯我的正則表達式來描述我的意圖有所幫助,我將其解釋爲:我想匹配0個或更多個'tag'重複(0或更多的字符,懶惰的評價)「;(可選空間)」(貪婪的評價)。