Как найти подтекст без запятой, используя регулярное выражение в R?

У меня есть фрейм данных как:

result <- c('Ab1 : 256 ug/mL(R), Ab2(disk); 18mm(S)', 'Ab1 : 4 ug/mL(S), Ab2(disk); <2mm(R)')
df <- data.frame(result)

Что мне делать, если я хочу проверить, появляется ли "(R)" после "антибиотики1"?

grep("Ab1[[:print:]]*\\(R\\)", result)

дает

[1] 1 2

в то время как результат, который я хочу,

[1] 1

1 ответ

Попробуй это:

grep("Ab1[^(]*?\\(R\\)", result)
[1] 1

Ab1      match 'Ab1' literally
[^(]*?   match anything besides an opening parenthesis, non greedily
(R)      match '(R)' literally

Во втором случае невозможно выполнить это сравнение, не используя сначала хотя бы одну открывающую скобку, следовательно, только первые соответствия.

Другие вопросы по тегам