Обнаружение последовательности с помощью регулярных выражений
Представьте, что у меня в списке несколько строк символов:
[[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