Извлечь подстроку между двумя двоеточиями / специальными символами - PullRequest
0 голосов
/ 12 февраля 2019

Я хочу извлечь "SUBSTRING" с помощью sub () из следующей строки:

attribute <- "S4Q7b1_t1_r1: SUBSTRING: some explanation: some explanation - ..."

Я использовал следующий код, но, к сожалению, он не работал:

sub(".*: (.*) : .*", "\\1", attribute) 

Кто-нибудь знает ответ на этот вопрос?

1 Ответ

0 голосов
/ 12 февраля 2019

Вы можете использовать

sub("^[^:]*: ([^:]*).*", "\\1", attribute) 

См. Демонстрационную версию regex

Вам нужно полагаться на классы отрицательных символов, [^:], которые соответствуют любому символу, кроме :, поскольку .* соответствует жадно любым 0 или более символам.Кроме того, ваш шаблон содержит пробел перед : и отсутствует в строке.

Подробно

  • ^ - начало строки
  • [^:]* - любые 0+ символов, кроме :
  • : - двоеточие с пробелом - ([^:]*) - Захват группы 1 (\1 относится к этому значению):любые 0+ символов кроме :
  • .* - остаток строки.

R Демо :

attribute <- "S4Q7b1_t1_r1: SUBSTRING: some explanation: some explanation - ..."
sub("^[^:]*: ([^:]*).*", "\\1", attribute) 
## => [1] "SUBSTRING"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...