Ruby 中的 Extglob 语法风格匹配
Extglob syntax style matching in Ruby
我想创建一个 glob 表达式来识别其中没有任何句点(句点)的文件名,并在 Ruby 代码中使用该表达式。我意识到普通的 glob 表达式不能做到这一点。然而,bash extglob 有一个语法可以处理这个问题。是否可以在 Ruby 中使用 bash extglob 样式模式,使用核心 Ruby 库或第三方 gem?
我尝试使用 File::FNM_EXTGLOB
,但没有用。以下是测试 File::FNM_EXTGLOB
是否具有与 bash extglob 完全相同的语法的简化场景,但似乎并非如此:
File.fnmatch("myfile_+[0-9].txt", "myfile_123.txt", File::FNM_EXTGLOB)
此外,File.fnmatch
的 English-language and Japanese-language 文档仅谈论 File::FNM_EXTGLOB
允许您使用两种可能性的联合,例如 File.fnmatch('c{at,ub}s', 'cats', File::FNM_EXTGLOB)
.
使用 glob 表达式的替代方法是使用正则表达式,或者 using the operating system to do the globbing itself,但如果可能的话,我宁愿不走那些路。
您链接到的文档描述了 Ruby 中 FNM_EXTGLOB
可以完成的所有操作;也就是说,大括号是您在使用该标志时获得的唯一额外功能。不确定是否有任何外部库,但我怀疑是否有。
我想创建一个 glob 表达式来识别其中没有任何句点(句点)的文件名,并在 Ruby 代码中使用该表达式。我意识到普通的 glob 表达式不能做到这一点。然而,bash extglob 有一个语法可以处理这个问题。是否可以在 Ruby 中使用 bash extglob 样式模式,使用核心 Ruby 库或第三方 gem?
我尝试使用 File::FNM_EXTGLOB
,但没有用。以下是测试 File::FNM_EXTGLOB
是否具有与 bash extglob 完全相同的语法的简化场景,但似乎并非如此:
File.fnmatch("myfile_+[0-9].txt", "myfile_123.txt", File::FNM_EXTGLOB)
此外,File.fnmatch
的 English-language and Japanese-language 文档仅谈论 File::FNM_EXTGLOB
允许您使用两种可能性的联合,例如 File.fnmatch('c{at,ub}s', 'cats', File::FNM_EXTGLOB)
.
使用 glob 表达式的替代方法是使用正则表达式,或者 using the operating system to do the globbing itself,但如果可能的话,我宁愿不走那些路。
您链接到的文档描述了 Ruby 中 FNM_EXTGLOB
可以完成的所有操作;也就是说,大括号是您在使用该标志时获得的唯一额外功能。不确定是否有任何外部库,但我怀疑是否有。