Google sheets 从APA引文中提取文本

Google sheets 从APA引文中提取文本,google-sheets,formulas,re2,Google Sheets,Formulas,Re2,我有一个包含APA引文风格文本的电子表格,我想把它们分成作者、日期和标题 引用的一个例子是: Parikka, J. (2010). Insect Media: An Archaeology of Animals and Technology. Minneapolis: Univ Of Minnesota Press. 鉴于此字符串位于字段I2中,我设法执行以下操作: 名称:=LEFT(I2,FIND(“(”,I2)-1)产生Parikka,J. 日期:=MID(I2,FIND(“,I2)+1

我有一个包含APA引文风格文本的电子表格,我想把它们分成作者、日期和标题

引用的一个例子是:

Parikka, J. (2010). Insect Media: An Archaeology of Animals and Technology. Minneapolis: Univ Of Minnesota Press.
鉴于此字符串位于字段I2中,我设法执行以下操作:

名称:
=LEFT(I2,FIND(“(”,I2)-1)
产生
Parikka,J.

日期:
=MID(I2,FIND(“,I2)+1,FIND(“),I2)-FIND(“,I2)-1
收益率
2010

然而,我一直在提取标题
昆虫媒介:动物与技术考古学的名称。

我当前的公式
=MID(I2,FIND(“).”,I2)+2,FIND(“).”,I2)-FIND(“.”,I2))
仅部分返回标题-输出应显示
)和以下
之间的每个字符

我尝试了
=REGEXEXTRACT(I2,“\)\.\s(.[^\.])\.\s”)
,这通常可以工作,但不会在第一个“.”处停止-与此示例类似:

Sanders,E.B.-N.,Brandt,E.,和Binder,T.(2010)。组织参与式设计工具和技术的框架。第11届两年期参与式设计会议记录(第195-198页)。ACM。从http://dl.acm.org/citation.cfm?id=1900476

哪里出错了?

试试:

=split(SUBSTITUTE(SUBSTITUTE(I2, "(",""), ")", ""),".")
如果你不在2010年前后替换括号,它会认为这是一个负数——2010年

对于标题,请尝试将索引拆分添加到现有公式中:

=index(split(REGEXEXTRACT(A5, "\)\.\s(.*[^\.])\.\s" ),"."),0,1)&"."
标题如下(至少在您给出的两个示例中):

=MID(I2,find("). ",I2)+3,find(". ",I2,find("). ",I2)+3)-(find("). ",I2)+3)+1)
英语:在第一次出现
)之后开始获取子字符串。
,直到并包括以下第一次出现的

如果您希望使用
REGEXEXTRACT
,那么这是有效的(在您的两个示例中)。(您还可以看到a。):

错在哪里


在表达式中,您捕获的是
(.*[^\.])
,它贪婪地包含字符类
中的任意数量的字符后跟字符,而不是(反斜杠或点)
,这意味着可以捕获多个句子。表达式以未捕获的
\.\s完成,因此捕获组将在句点之后的空格之前结束,而不是包含它。

hi ed!这一年确实有效,但我正在努力输出标题“)”之后的整个长度,然后是另一个
=REGEXEXTRACT(I3,"(?:.*\(\d{4}\)\.\s)([^.]*\.)(?: .*)")