Предположим, у меня есть следующие строки (имя файла):Извлечение 2 части строки
a <- "X/ZHEB100/TKN_VAR29380_timely_p1.txt"
, который состоит из нескольких частей (здесь дается p1)
или еще один
b <- "X/ZHEB100/ZHN_VAR29380_timely.txt"
, который состоит только из одной части (поэтому нет необходимости наклеивать какие-либо р)
Как извлечь идентификатор r, который является тремя буквами до VARXXXXX
(так в случае, если один из них будет TKN
, а в случае два - ZHN
). PLUS идентификатор части, если таковой имеется?
Так что результат должен быть:
case1 : TKN_p1
case2 : ZHN
Я знаю, как извлечь первый идентификатор, но я не могу справиться с второй в то же время.
Мой подход до сих пор:
sub(".*(.{3})_VAR29380_timely(.{3}).*","\\1\\2", a)
sub(".*(.{3})_VAR29380_timely(.{3}).*","\\1\\2", b)
, но это добавляет .tx
неправильно во втором случае.
Попробуйте 'югу ("^*/([AZ] {3}) _ [^/_] + _ [^/_] + (_ [^ _. /] +)? \\. [^.] * $ "," \\ 1 \\ 2 ", a)' –
Возможно, сначала проверите идентификатор, например 'stringr :: str_match (строка, '_p. \\. txt')', а затем использовать два гораздо простых регулярных выражения? –
@ WiktorStribiżew, который не работает во втором случае. – user3032689