2013-03-08 59 views
1

我正在努力抓住字符串中的兩個不同元素。grep兩個字符串

字符串這個樣子的,

str <- c('a_abc', 'b_abc', 'abc', 'z_zxy', 'x_zxy', 'zxy') 

我曾嘗試與?grep不同的選擇,但我不能得到它的權利,在做這樣的事情,

grep('[_abc]:[_zxy]',str, value = TRUE) 

我想要的是,

[1] "a_abc" "b_abc" "z_zxy" "x_zxy" 

任何幫助,將不勝感激。

回答

6

使用正常括號(,而不是方括號[

grep('_(abc|zxy)',str, value = TRUE) 
[1] "a_abc" "b_abc" "z_zxy" "x_zxy" 

爲了使grep多一點靈活,你可以做這樣的事情:

grep('_.{3}$',str, value = TRUE) 

將匹配後跟任意字符下劃線_.三次{3}緊接着字符串$

+0

謝謝,我真的很喜歡你的迴應。 – 2013-03-08 00:16:15

1

在這種情況下,只是在做:

str[grep("_",str)] 

將工作......是因爲你的具體情況更復雜?

+0

年底這是我的情況有點複雜,我應該已經表明我的問題。儘管感謝您的簡潔回答。 – 2013-03-08 00:13:36

+0

沒問題,貌似現在排序了 – alexwhan 2013-03-08 00:16:11

6

這應該工作:grep('_abc|_zxy', str, value=T)

X|Y比賽時,無論是X匹配或Y比賽

+0

'|'原因,謝謝! – 2013-03-08 00:11:47