2016-10-26 12 views
1

Я пытаюсь сделать регулярное выражение в stringr для отрицательного просмотра назад в R.Regex отрицателен в R с просмотром назад

Так в основном, у меня есть текстовые данные, что выглядит примерно так:

See item 7 Management's Discussion and Analysis. BlahBlahBlah. Item 7 Management's Discussion and Analysis. BlahBlahBlah. Item 8 Financial Statements and Supplementary Data. 

Я хочу выбрать все, начиная с «пункта 7» сразу после «бла-бла-блаха». Приговор «Пункт 8-финансовой отчетности и дополнительные данные»

Так я хочу

Item 7 Management's Discussion and Analysis. BlahBlahBlah. Item 8 Financial Statements and Supplementary Data. 

который все для предложения, которое содержит «см пункт 7 Обсуждение и анализ управленческих решений»

Прямо сейчас, за исключением , Я работаю с этим кодом:

(?<!see)Item 7(.*?)Item 8 

Но это не возвращает то, что я хочу.

Моя логика заключается в том, чтобы не смотреть на предложения, содержащие слово «видеть», за которым следует «пункт 7« Обсуждение и анализ руководства », но он, похоже, не работает.

https://regex101.com/r/yF7aQ1/3

Есть ли способ, что я могу реализовать эту негативную назад '?

ответ

1

Не знаете, как вы его реализуете в R, .*(?<!See) (item 7 .*) работает с sub, просто будьте осторожны с пространством после просмотра и буквенным футляром, который вы можете игнорировать с помощью параметра ignore.case.

sub(".*(?<!See) (item 7 .*)", "\\1", s, ignore.case = T, perl = T) 

# [1] "Item 7 Management's Discussion and Analysis. BlahBlahBlah. Item 8 Financial Statements and Supplementary Data." 

Другой вариант:

sub(".*(?=(?<!See) ?item 7)", "", s, ignore.case = T, perl = T) 
# [1] "Item 7 Management's Discussion and Analysis. BlahBlahBlah. Item 8 Financial Statements and Supplementary Data." 

С str_extract_all() из stringr пакета, который, кажется, не обеспечивают ignore.case вариант, вы можете использовать [Ii] игнорировать случай:

library(stringr) 
str_extract_all(s, "(?<!See)[Ii]tem 7(.*)") 
# [1] "Item 7 Management's Discussion and Analysis. BlahBlahBlah. Item 8 Financial Statements and Supplementary Data." 
+0

Oh ! Сожалею! Я забыл добавить, что я использую stringr для этого. –

+0

Так str_extract_all (текст, регулярное выражение ("(?

+0

будет также работать с str_extract_all? –