我正在尝试从以下字符串中提取子字符串:
x <- "U1+ ^Eucalyptus baxteri s.s.,Eucalyptus viminalis subsp. cygnetensis\^tree\7\i;U2 Acacia melanoxylon,Banksia marginata\tree\7\i;M1 ^Leucopogon parviflorus,Spyridium parvifolium,Leucopogon lanceolatus var. lanceolatus\^shrub\4\r;M2 Xanthorrhoea minor subsp. lutea,Pteridium esculentum,Billardiera scandens\fern,grass-tree,vine\3\i;G1 ^Veronica calycina,Brunonia australis,Deyeuxia quadriseta,Dianella revoluta var. revoluta s.l.,Dichelachne crinita\rush,^forb,tussock grass,other grass,sedge\2\c;G2 Lagenophora stipitata,Luzula meridionalis,Lomandra nana,Pimelea humilis,Acrotriche serrulata\rush,heath shrub,forb,vine,sedge\1\i"
我希望提取6c
作为^tree
之后立即出现的子集,但是,我面临使用sub()
函数的问题,这可能与主字符串中存在的特殊字符有关。如有任何帮助,不胜感激。
sub(".*?\^tree([^;]+).*", "\1", x)
[1] "\7\i"
注意,双反斜杠只是一个单字面值的反斜杠。
cat(sub(".*?\^tree([^;]+).*", "\1", x))
7i