正则表达式从日记参考中提取信息

时间:2013-12-09 00:01:38

标签: regex string r gsub

如果我的字符串具有格式为

的给定日记参考
ref="Carlson, A., Bernier, U.R., Hogsette, J.A., and Sutton, B.D. 2001. Distinctive hydrocarbons of the black dump fly, Hydrotaea aenescens (Diptera: Muscidae). Arch. Insect Biochem. Physiol. 48:167-178."

然后我想在R中提出好的gsub表达式来提取第一作者,期刊和卷加页。这一年和作者我已经想出了

year=strsplit(sub('^\\D*', '',ref),". ")[[1]][[1]]
year
"2001"
author=gsub("[^a-zA-Z0-9 ]","",strsplit(ref,"\\., ")[[1]][[1]])
author
"Carlson A"

但是我无法为期刊以及卷和页面找到一个好的表达方式。或许有人想过吗? (理想情况下,卷和页面应该被检测为包含数字,句号或冒号的字符串的最后一个字符,并且日志应该包含在第一次删除之后位于年份和卷+页面之间的部分。年度(加上句号)和下一个句号之间的第一部分,应该是标题)

欢呼,汤姆

1 个答案:

答案 0 :(得分:1)

此处无需使用gsub,只需strsplit。这应该是一个好的开始:

ll <- unlist(strsplit(ref,','))
ll[1]
[1] "Carlson"

strsplit(tail(ll,1),'[.]')
[[1]]
[1] " Hydrotaea aenescens (Diptera: Muscidae)" " Arch"                                   
[3] " Insect Biochem"                          " Physiol"                                
[5] " 48:167-178"