我想拆分此字符串中的幾個子:如何在R中使用str_split()?
BAA33520.2 | /基因= 「vpf402」/產品= 「Vpf402」 | GI:8272373 | AB012574 |加入{7347:7965, 0 :591}
分隔符是| (ascii 124)。
它適用於所有其他分隔符,但不適用於此分隔符。
我想拆分此字符串中的幾個子:如何在R中使用str_split()?
BAA33520.2 | /基因= 「vpf402」/產品= 「Vpf402」 | GI:8272373 | AB012574 |加入{7347:7965, 0 :591}
分隔符是| (ascii 124)。
它適用於所有其他分隔符,但不適用於此分隔符。
?regex
兩個正則表達式可以由綴運算符
|
接合;結果正則表達式匹配任何匹配任一子表達式的字符串。例如,abba|cde
匹配字符串abba
或字符串cde
。請注意,交替在字符類中不起作用,其中|
具有字面意思。基本構建塊是匹配單個字符的正則表達式。大多數字符(包括所有字母和數字)都是正則表達式,與自己匹配。任何具有特殊含義的元字符都可以在前面加一個反斜槓來引用。擴展正則表達式中的元字符是
. \ | () [ {^$ * + ?
,但請注意,這些是否具有特殊含義取決於上下文。
這樣:
stringr::str_split('BAA33520.2|/gene="vpf402",/product="Vpf402"|GI:8272373|AB012574|join{7347:7965, 0:591}', "\\|")
正如@Frank注意,您可以通過添加fixed=TRUE
爲此在base::strsplit()
:
strsplit('BAA33520.2|/gene="vpf402",/product="Vpf402"|GI:8272373|AB012574|join{7347:7965, 0:591}',"|", fixed=TRUE)
但是,您也可以通過裝飾做到這一點與stringr::str_split()
分隔符的正則表達式:
stringr::str_split('BAA33520.2|/gene="vpf402",/product="Vpf402"|GI:8272373|AB012574|join{7347:7965, 0:591}',
regex("|", literal=TRUE))
順便說一句,stringr
是非常簡單,只是一個在這一點上略有友好的包裝來stringi
功能,我強烈建議學習stringi
包,因爲它包含字符串spiltting外一些精彩的寶石。
PS:分割函數根本不會分割該字符串,被用作分隔符。 – CLM
你嘗試失敗了什麼? – hrbrmstr
你試過逃脫它嗎?即'\\ |'' – aosmith