2

で終わるが、または次の文字ベクトルで終わらないgrepすべての文字列を見つけるために使用する必要があります。GSTIGVÄG

test=c("EWASPG","AVOPW","SDAGSTIG","ASDVVÄG","ASDVWE","QSCIUVG","QWSFNJG")

私はこれを試しましたが、正確なフレーズが前にある場合に false を返すのではなく、前に文字S, T, I,がある文字列に対して false を返します。VÄGG

grep("[^((STI)|(VÄ))]G$", test, value=T)

# [1] "EWASPG"  "QWSFNJG"

ありがとう!

私はこの投稿を認識しています。

4

1 に答える 1

4

文字クラスは常に 1 文字と一致するため、、、、、またはを[^(STI)]除く任意の文字と一致(します。STI)

否定の後読みアサーションを使用して、文字列が特定の部分文字列で終わっていないことを確認できますが、R で Perl 互換の正規表現モードを有効にする必要があります。

grep("(?<!STI|VÄ)G$", test, perl=TRUE, value=TRUE);

regex101.com で実際にテストしてください。

于 2014-06-04T11:41:42.017 に答える