Regex 从日记引用中提取信息的正则表达式

Regex 从日记引用中提取信息的正则表达式,regex,string,r,gsub,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表达式来提取第一作者

如果我有一个字符串,该字符串的格式为

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"
但是我很难找到一个好的表达方式来表达我的日记和书卷。有人有什么想法吗?(理想情况下,应将卷和页检测为字符串的最后一个字符,该字符串包含数字、句号或冒号,日记账应包括介于年和卷之间的部分+在首次删除介于年和年之间的第一部分(加句号)后的页。)还有下一个句号,应该是标题)


干杯,汤姆

这里不需要使用
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"   

ll你能给出一个明确的输出吗?嘿,谢谢-这是一个很好的解决方案来获取卷数和页码,但是关于期刊标题呢-这更难提取,不是吗?(“拱门。昆虫生物化学。生理学。”)@TomWenseleers-我想你被塞进了杂志的标题里。我看不出人们如何能够可靠地确定论文标题的结尾和期刊的开头。也许你可以用一些常见的茎干,比如
Arch.
Journal of
J.
或其他什么来猜它。@tomwensellers我不知道。我认为学术领域的贡献者会更有帮助。首先去掉年份和第一个句号之间的字符串部分,假设这是标题,然后假设剩余的部分直到卷信息都是期刊,怎么样?但是我怎么才能最优雅地做这样的事情呢?