【发布时间】:2012-11-21 22:08:09
【问题描述】:
我有一个字符串向量:
s <- c('abc1', 'abc2', 'abc3', 'abc11', 'abc12',
'abcde1', 'abcde2', 'abcde3', 'abcde11', 'abcde12',
'nonsense')
我希望正则表达式仅匹配以abc 开头并以3、11 或12 结尾的字符串。换句话说,正则表达式必须排除 abc1 而不是 abc11,abc2 但不是 abc12,等等。
我认为使用前瞻断言很容易做到这一点,但我还没有找到方法。有吗?
编辑:感谢下面的发帖人指出原始帖子中的严重歧义。
实际上,我有很多字符串。它们都以数字结尾:一些在 0 中,一些在 9 中,一些在中间的数字中。我正在寻找一个正则表达式,它将匹配所有字符串除了那些以字母结尾的字符串,后跟 1 或 2。(正则表达式也应该只匹配那些以 abc 开头的字符串,但是这是一个简单的问题。)
我尝试使用否定的前瞻断言来创建这样的正则表达式。但我没有任何成功。
感谢所有回复和评论的人。受到你们几个人的启发,我最终使用了这个组合:grepl('^abc', s) & !grepl('[[:lower:]][12]$', s)。
【问题讨论】: