2016-07-04 31 views
2

Ich habe eine Tabelle mit APA Zitationsstil Text und ich mag, dass sie in Autor aufzuspalten (n), Datum und Titel.Extrahieren von Text aus APA Zitat

Name:: =LEFT(I2, FIND("(", I2)-1) Erträge Parikka, J.

Datum: =MID(I2,FIND("(",I2)+1,FIND(")",I2)-FIND("(",I2)-1) Erträge

Ein Beispiel für ein Zitat wäre: die folgenden tun verwaltet

Parikka, J. (2010). Insect Media: An Archaeology of Animals and Technology. Minneapolis: Univ Of Minnesota Press. 

Diese Saite ist in Feld I2 I 2010

Allerdings bin ich bei der Extraktion des Namens des Titels 01 stecken

Meine aktuelle Formel =MID(I2,FIND(").",I2)+2,FIND(").",I2)-FIND(".",I2)) nur gibt den Titel zum Teil - der Ausgang jedes Zeichen zwischen ). und den folgenden . zeigen.

Ich versuchte =REGEXEXTRACT(I2, "\)\.\s(.*[^\.])\.\s") und das funktioniert im Allgemeinen aber bei den ersten nicht zu stoppen - Wie bei diesem Beispiel „“:

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

Wo liegt der Fehler?

Antwort

1

Der Titel kann gefunden werden (in den beiden Beispielen Sie gegeben haben, zumindest) mit diesem:

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

In Englisch: Holen Sie den Teilstring, der nach dem ersten Auftreten von ). beginnt, bis einschließlich des ersten Auftretens von . folgend. Wenn Sie REGEXEXTRACT verwenden möchten, funktioniert das (auf Ihren zwei Beispielen). (Sie können auch einen Regex101 demo sehen.):

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

Wo liegt der Fehler?

In Ihrem Ausdruck wurden erfassen Sie (.*[^\.]), die umfasst Gierig beliebige Anzahl von Zeichen durch ein Zeichen in der Zeichenklasse not (backslash or dot), gefolgt was bedeutet, dass können mehrere Sätze erfasst werden. Der Ausdruck wurde mit \.\s beendet, der nicht erfasst wurde. Die Erfassungsgruppe würde also vor einen Zeitraum-dann-Abstand beenden, anstatt ihn einzubeziehen.

0

Versuchen:

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

Wenn Sie nicht die Klammern um 2010 ersetzen, es denkt, dass es eine negative Zahl -2010.

Für Ihren Titel versuchen Index Split, um Ihre bestehenden Formel hinzu:

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

hi ed!Das Jahr funktioniert, aber ich kämpfe mit der Ausgabe der gesamten Länge des Titels, der nach ") kommt." und wird von einem anderen "." – birgit