2016-07-04 3 views
2

У меня есть электронная таблица, содержащую текст APA Цитирование стиля, и я хочу, чтобы разделить их на автора (ов), даты и титула.Извлечения текста из 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

Try:

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

Если вы не заменить круглые скобки вокруг 2010, он считает, что это отрицательное число -2010.

Для вашего Заголовок попробуйте добавить индекс раскола к существующей формуле:

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

hi ed!год действительно работает, но я борюсь с выводом всей длины названия, которое появляется после »)». и за ним следует еще один ». – birgit

 Смежные вопросы

  • Нет связанных вопросов^_^