2016-07-04 21 views
2

提取文本我有含APA引用樣式的文本電子表格,我想將它們分成作者(S)日期標題從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

但是,我被困在提取名稱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

哪裏錯了嗎?

回答

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結束,但未捕獲,所以捕獲組將在之前結束,而不是包含它。

0

嘗試:

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

如果不更換2010年左右括號,它認爲它是一個負數-2010。

爲了您的標題嘗試添加索引分割到您現有的公式:

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

hi ed!這一年確實奏效,但我正在努力輸出「)之後的所有標題」。「之後是另一個「。」 – birgit