Предположим, у меня есть набор строк:
test <- c('MTB', 'NOT MTB', 'TB', 'NOT TB')
Я хочу написать регулярное выражение, чтобы оно совпадало либо с 'TB', либо с 'MTB' (например, с выражением "M? TB") строго, когда перед этим FAILS предшествует фраза "NOT" (включая пробел).
Следовательно, мой предполагаемый результат -
TRUE FALSE TRUE FALSE
Пока что я попробовал пару вариантов
grepl("(?<!NOT )M?TB", test, perl = T)
TRUE TRUE TRUE FALSE
Неудачно. Как видите, фраза «НЕ МТБ» соответствует критериям моего регулярного выражения.
Кажется, что вы включили необязательный символ "M?" кажется, заставляет R думать, что отрицательный взгляд сзади также необязателен. Я пытался использовать скобки для группировки шаблонов, таких как
grepl("(?<!NOT )(M?TB)")
TRUE TRUE TRUE FALSE
Что также не исключает фразу «НЕ MTB». По общему признанию, мне неясно, как скобки работают в регулярном выражении или даже в том, что означает «группировка» в этом контексте У меня возникли проблемы с поиском вопроса, связанного с тем, как группировать, требовать и «настраивать» различные части регулярного выражения, чтобы я мог сопоставить фразу , начинающуюся с необязательного символа и начинающуюся с отрицательного обратного просмотра . Как правильно написать такое выражение?