如果没有类似 perl 的前瞻性,如何对模式不存在的情况进行 grep?
How to grep for cases where a pattern doesn't exist without perl-like lookahead?
我正在尝试为未发生模式创建正则表达式(具体来说,我想从驱动器中提取文件夹和子文件夹的列表,所以我正在寻找任何不发生的事情'以 \.[[:alnum:]]{1,4}$
) 结尾。因为这个模式进入 list.files
,我不能使用类似 PERL 的前瞻(对吧?)。除了首先将所有内容放入向量中然后 运行 使用 lookahead 对其进行 grep 之外,我有什么方法可以实现它吗?
我不太熟悉 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"
好吧,这很愚蠢。答案一直盯着我看——list.dirs
只列出目录,而 list.files
列出所有文件。我不确定为什么一开始尝试前者似乎没有给我想要的结果...
我正在尝试为未发生模式创建正则表达式(具体来说,我想从驱动器中提取文件夹和子文件夹的列表,所以我正在寻找任何不发生的事情'以 \.[[:alnum:]]{1,4}$
) 结尾。因为这个模式进入 list.files
,我不能使用类似 PERL 的前瞻(对吧?)。除了首先将所有内容放入向量中然后 运行 使用 lookahead 对其进行 grep 之外,我有什么方法可以实现它吗?
我不太熟悉 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"
好吧,这很愚蠢。答案一直盯着我看——list.dirs
只列出目录,而 list.files
列出所有文件。我不确定为什么一开始尝试前者似乎没有给我想要的结果...