【问题标题】:Extracting text from APA citation从 APA 引文中提取文本
【发布时间】:2016-11-05 15:23:22
【问题描述】:

我有一个包含 APA 引文样式文本的电子表格,我想将它们分成 author(s)datetitle

引用的一个例子是:

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

但是,我无法提取标题的名称Insect Media: An Archaeology of Animals and Technology.

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

我试过=REGEXEXTRACT(I2, "\)\.\s(.*[^\.])\.\s" ),这通常有效,但不会停在第一个“。” - 就像这个例子:

Sanders, E. B.-N., Brandt, E., & Binder, T. (2010). A framework for organizing the tools and techniques of participatory design. In Proceedings of the 11th biennial participatory design conference (pp. 195–198). ACM. Retrieved from http://dl.acm.org/citation.cfm?id=1900476

错在哪里?

【问题讨论】:

    标签: google-sheets formulas re2


    【解决方案1】:

    可以通过以下方式找到标题(至少在您给出的两个示例中):

    =MID(I2,find("). ",I2)+3,find(". ",I2,find("). ",I2)+3)-(find("). ",I2)+3)+1)
    

    英文:获取从).第一次出现之后开始的子字符串,直到并包括.的第一次出现。

    如果您想使用REGEXEXTRACT,那么这有效(在您的两个示例中)。 (你也可以看到Regex101 demo。):

    =REGEXEXTRACT(I3,"(?:.*\(\d{4}\)\.\s)([^.]*\.)(?: .*)")
    

    错在哪里?

    在您的表达式中,您正在捕获(.*[^\.]),它贪婪地包含任意数量的字符,后跟字符类not (backslash or dot) 中的一个字符,这意味着可以捕获多个句子。表达式以 \.\s 结尾,它未被捕获,因此捕获组将在 之前 一个句点-然后-空格结束,而不是包含它。

    【讨论】:

      【解决方案2】:

      试试:

      =split(SUBSTITUTE(SUBSTITUTE(I2, "(",""), ")", ""),".")
      

      如果2010年左右不替换括号,它认为是负数-2010。

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

      =index(split(REGEXEXTRACT(A5, "\)\.\s(.*[^\.])\.\s" ),"."),0,1)&"."
      

      【讨论】:

      • 嗨!这一年确实有效,但我正在努力输出“)”之后的整个标题长度。然后是另一个“.”
      猜你喜欢
      • 2022-12-19
      • 2016-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-18
      • 2018-08-21
      • 2018-10-10
      • 2011-04-30
      相关资源
      最近更新 更多