Regex 正则表达式,用于匹配以字母结尾但不以R中的短语结尾的字符串
我需要使用Regex 正则表达式,用于匹配以字母结尾但不以R中的短语结尾的字符串,regex,r,inverse-match,Regex,R,Inverse Match,我需要使用grep查找以下字符向量中以G结尾但不以STIG或VÄG结尾的所有字符串: test=c("EWASPG","AVOPW","SDAGSTIG","ASDVVÄG","ASDVWE","QSCIUVG","QWSFNJG") 我尝试了这个方法,但是对于任何带有字母S,T,I,V,G前面的字符串,它都会返回false,而不是在G前面有确切的短语时返回false grep("[^((STI)|(VÄ))]G$", test, value=T) # [1] "EWASPG" "QWSF
grep
查找以下字符向量中以G
结尾但不以STIG
或VÄG
结尾的所有字符串:
test=c("EWASPG","AVOPW","SDAGSTIG","ASDVVÄG","ASDVWE","QSCIUVG","QWSFNJG")
我尝试了这个方法,但是对于任何带有字母S
,T
,I
,V
,G
前面的字符串,它都会返回false,而不是在G
前面有确切的短语时返回false
grep("[^((STI)|(VÄ))]G$", test, value=T)
# [1] "EWASPG" "QWSFNJG"
谢谢
我知道。A总是匹配单个字符,因此[^(STI)]
将匹配除(
,S
,T
,I
或)以外的任何字符。
可以使用确保字符串不以某个子字符串结尾,但需要在R中启用与Perl兼容的正则表达式模式:
grep("(?<!STI|VÄ)G$", test, perl=TRUE, value=TRUE);
grep((?A始终匹配单个字符,因此[^(STI)]
将匹配除(
,S
,T
,I
或之外的任何字符)
可以使用确保字符串不以某个子字符串结尾,但需要在R中启用与Perl兼容的正则表达式模式:
grep("(?<!STI|VÄ)G$", test, perl=TRUE, value=TRUE);
grep(“(?在R中,这将是grep(”)(?非常感谢!R似乎可以很好地处理Tim的代码,而不需要额外的jbaums)。不确定您所指的是哪一个额外的引号。除非您只是一般地引用我的单引号,在这种情况下,它们完全可以与双引号交换。在R中,这将是grep('(?非常感谢!R似乎可以很好地处理Tim的代码,而不需要额外的jbaums)。不确定您指的是哪一个额外的引号。除非您只是指我的单引号,在这种情况下,它们完全可以与双引号交换。