2

次のようなリストに複数の文字列があるとします。

[[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-EXFAEX

このように、特定の部分文字列が別の部分文字列の前に現れる文字列を識別する一般的な正規表現を定義するにはどうすればよいでしょうか?

4

1 に答える 1

8

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
于 2015-09-21T13:37:51.887 に答える