首页 > 解决方案 > 如果没有类似 perl 的前瞻,如何 grep 模式不存在的情况?

问题描述

我正在尝试为不发生模式时创建一个正则表达式(具体来说,我想从驱动器中提取文件夹和子文件夹的列表,所以我正在寻找任何不以 结尾的东西\\.[[:alnum:]]{1,4}$) . 因为这种模式进入list.files,我不能使用类似 PERL 的前瞻(对吗?)。除了首先将所有内容放入向量然后在其上运行 grep 并进行前瞻之外,我还有其他方法可以实现它吗?

标签: rregexregex-lookarounds

解决方案


我对R的正则表达式不太熟悉,但这似乎对我有用:

'.*[^[:alnum:]].{0,3}$'

这意味着您希望最后 3 个字符中的至少一个不是字母数字

files <- c("my_file", "script.php", "foo!faa", "test123.321tset", "colors.red")

files[grep(".*[^[:alnum:]].{0,3}$", files)]
# => "script.php" "foo!faa"    "colors.red"

推荐阅读