2015-02-26 2 views
0

У меня есть много строк, которые все ищут подобное, например:извлечения текста из строки в R

x1= "Aaaa_11111_AA_Whatiwant.txt" 
x2= "Bbbb_11111_BBBB_Whatiwanttoo.txt" 
x3= "Ccc_22222_CC_Whatiwa.txt" 

Я хотел бы извлечь: WhatiwantWhatiwanttoo, и Whatiwa в R.

Я начал с substring(x1,15,23), но я не знаю, как его обобщить. Как я могу всегда извлекать часть между последними _ и .txt?

Спасибо!

+1

Подсказка: регулярные выражения. –

+0

Добавьте тег 'regex', и вы получите ответы в следующие 2 минуты. –

ответ

2

Вы можете использовать regexp группы захвата:

gsub(".*_([^_]*)\\.txt","\\1",x1) 

enter image description here

+0

как вы строите эту блок-схему? –

+2

с использованием этого (стиль java-script так может быть другим) [http://www.regexplained.co.uk/](http://www.regexplained.co.uk/), множество других сайтов, которые делают то же самое – NicE

+0

спасибо, могу я знать, почему вы используете только. * _ ([^ _] *) \. Txt ", чтобы получить блок-схему, если я использую целую". * _ ([^ _] *) \\. Txt ", «\\ 1», я получаю что-то другое: -p –

0

Вы также можете использовать библиотеку stringr с Funtions как str_extract (и многие другие возможности) только в случае, если вы не входите в регулярные выражения. Он чрезвычайно прост в использовании

x1= "Aaaa_11111_AA_Whatiwant.txt" 
x2= "Bbbb_11111_BBBB_Whatiwanttoo.txt" 
x3= "Ccc_22222_CC_Whatiwa.txt" 
library(stringr) 
patron <- "(What)[a-z]+" 
str_extract(x1, patron) 
## [1] "Whatiwant" 
str_extract(x2, patron) 
## [1] "Whatiwanttoo" 
str_extract(x3, patron) 
## [1] "Whatiwa" 
Смежные вопросы