regex - 正则表达式匹配以字母结尾但不以 R 中的短语结尾的字符串

标签 regex r inverse-match

我需要使用 grep 查找以 G 结尾但不以 STIGVäG 结尾的所有字符串在以下字符向量中:

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

我尝试了这个,但对于任何带有字母 STIV 的字符串,它都会返回 false >, ÄG 之前,而不是当 G 前面有确切的短语时返回 false。

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

# [1] "EWASPG"  "QWSFNJG"

谢谢!

我知道this post .

最佳答案

一个character class始终匹配单个字符,因此 [^(STI)] 将匹配除 (, S, T 之外的任何字符>、I)

您可以使用 negative lookbehind assertion确保字符串不以某个子字符串结尾,但您需要在 R 中启用 Perl 兼容的正则表达式模式:

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

测试一下 live on regex101.com .

关于regex - 正则表达式匹配以字母结尾但不以 R 中的短语结尾的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24036373/

相关文章:

javascript - 为什么先行检查每个字符?

javascript - 金钱正则表达式模板

C# 将字符串变量中的转义字符转换为用于 SQL 查询的字符串文字

regex - 将带有正则表达式的文件与 list.files 进行匹配

pdf - 从 Okular 中的 pdf 到 TexMaker 的 Latex 反向搜索

javascript - 如何在 JavaScript 中将字符串限制为一组特定的字符?

regex - 为什么 RegularExpressionValidator 不匹配我的正则表达式?

r - 每个面都有自己的图例,但颜色映射一致

R-如何获取cutree组之间的关系?

regex - 我如何使用正则表达式 "inverse match"?