Обнаружение последовательности с помощью регулярных выражений

Представьте, что у меня в списке несколько строк символов:

[[1]]
 [1] "1-FA-1-I2-1-I2-1-I2-1-EX-1-I2-1-I3-1-FA-1-" 
 [2] "-1-I2-1-TR-1-"                              
 [3] "-1-I2-1-FA-1-I3-1-"                         
 [4] "-1-FA-1-FA-1-NR-1-I3-1-I2-1-TR-1-"          
 [5] "-1-I2-1-"                                   
 [6] "-1-I2-1-FA-1-I2-1-"                         
 [7] "-1-I3-1-FA-1-QU-1-"                         
 [8] "-1-I2-1-I2-1-I2-1-NR-1-I2-1-I2-1-NR-1-"     
 [9] "-1-I2-1-"                                   
[10] "-1-NR-1-I3-1-QU-1-I2-1-I3-1-QU-1-NR-1-I2-1-"
[11] "-1-NR-1-QU-1-QU-1-I2-1-"

Я хочу использовать регулярное выражение, чтобы обнаружить конкретные строки, где определенная подстрока предшествует другой подстроке, но не обязательно непосредственно предшествует другой подстроке.

Например, скажем, что мы ищем FA предшествующий EX, Это должно соответствовать 1 в списке. Даже если FA имеет -1-I2-1-I2-1-I2-1- между собой и EX, FA все еще происходит до EXследовательно, матч ожидается.

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

1 ответ

Решение

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

x <- c("1-FA-1-I2-1-I2-1-I2-1-EX-1-I2-1-I3-1-FA-1-" ,"-1-I2-1-TR-1-")
grepl("FA.*EX", x)
#[1]  TRUE FALSE
grep("FA.*EX", x)
#[1] 1
Другие вопросы по тегам