Я пытаюсь извлечь содержимое в квадратных скобках из строки:R: GSUB и захват
eq <- "(5) h[m] + nadh[m] + q10[m] --> (4) h[c] + nad[m] + q10h2[m]"
Я могу фильтровать их:
gsub("\\[.+?\\]","" ,eq) ##replaces square brackets and everything inside it
[1] "(5) h + nadh + q10 --> (4) h + nad + q10h2"
Но как я могу захватить то, что внутри кронштейны? Я попытался следующие:
gsub("\\[(.+)?\\])", "\\1", eq)
grep("\\[(.+)?\\]", eq, value=TRUE)
, но и вернуть мне всю строку:
[1] "(5) h[m] + nadh[m] + q10[m] --> (4) h[c] + nad[m] + q10h2[m]"
Кроме того, в моем приложении я не знаю, сколько таких терминов в квадратных скобках происходит, так что я не знаю как должен выглядеть аргумент «replace» в gsub (например, \\1
или \\1_\\2
). Спасибо заранее!
Это прекрасно работает, спасибо! Тем не менее, я не понимаю, почему мой захват с gsub выше не работает. – user1981275
Теперь я понимаю, почему gsub и grep не работали, спасибо за разъяснение! – user1981275