我有的氨基酸串是這樣的:提取多個重疊的子
x <- "MEALYRAQVLVDLT*MQLPSSFAALAAQFDQL*EKEKF*SLIARSLHRPQ**LLMFSLLVASVFTPCSALPFWSIKFTLFILS*SFLISDSILFIRVIDQEIKYVVPL*DLK*LTPDYCKCD*"
,我想以提取開始M
並用*
在完成所有的非重疊子串。因此,對於上述示例,我需要:
#[1] "MEALYRAQVLVDLT*"
#[2] "MQLPSSFAALAAQFDQL*"
#[3] "MFSLLVASVFTPCSALPFWSIKFTLFILS*"
作爲輸出。可以預見regexpr
給了我貪婪的解決方案:
regmatches(x, regexpr("M.+\\*", x))
#[1] "MEALYRAQVLVDLT*MQLPSSFAALAAQFDQL*EKEKF*SLIARSLHRPQ**LLMFSLLVASVFTPCSALPFWSIKFTLFILS*SFLISDSILFIRVIDQEIKYVVPL*DLK*LTPDYCKCD*"
我也試過的東西建議here,因爲這是類似於我的問題最多(但不完全),但無濟於事的問題。
任何幫助,將不勝感激。
您嘗試過非貪婪嗎? M。+?\\ * – lintmouse
不,但有人剛剛在下面的答案中提出了它,它的工作原理! –
我不明白,你說你知道「貪婪」和「非貪婪」之間的區別?怎麼可能 ? – sln