Language agnostic 具有算术比较的扩展glob功能

Language agnostic 具有算术比较的扩展glob功能,language-agnostic,glob,Language Agnostic,Glob,我有几个用例,在这些用例中,我希望能够声明性地指定一组文件,这些文件可能在路径中的不同位置有编号(换句话说,编号在不同的规范中可能不同,但我知道),并且能够指定这些编号范围上的条件将非常有用我知道可以在正则表达式中指定数字范围,但这很笨拙,而且容易出错,特别是在补偿像“01”和“1”这样的东西时 我的问题是,有人知道有任何语言或库提供类似的功能吗?这种东西似乎足够通用,非常有用,但我不记得见过类似的东西,最初的谷歌搜索也没有发现任何东西。最常见的方法(我想我以前确实用过)似乎是在使用正则表达式组

我有几个用例,在这些用例中,我希望能够声明性地指定一组文件,这些文件可能在路径中的不同位置有编号(换句话说,编号在不同的规范中可能不同,但我知道),并且能够指定这些编号范围上的条件将非常有用我知道可以在正则表达式中指定数字范围,但这很笨拙,而且容易出错,特别是在补偿像“01”和“1”这样的东西时

我的问题是,有人知道有任何语言或库提供类似的功能吗?这种东西似乎足够通用,非常有用,但我不记得见过类似的东西,最初的谷歌搜索也没有发现任何东西。最常见的方法(我想我以前确实用过)似乎是在使用正则表达式组,然后用您正在使用的任何编程语言处理这些组,但这种一次性解决方案并不真正令人满意

以下是我可能正在寻找的一个示例:

'/base_path/section/(?<n>\d{2})/subsection/(?<i>\d+)/.+' with 3 < n <= 9 and i < 100
但不是

/base_path/section/01/subsection/0/*

用例

我现在看到的主要用例是,我希望能够将一个文件集合划分成两个或多个组来分别处理,部分基于路径中间出现的一个区号。这是在各种配置下运行一些NLP实验的上下文,并且我想能够DELALA。以灵活的方式合理地指定要使用的文件,这样我就不会因为每次都使用正确的文件而发疯。

据我所知,在这种情况下,AWK是一种可行的方法

例如:

echo '/base_path/section/456/subsection/99/' | awk 'BEGIN { FS = "/" } /\/base_path\/section\/[0-9]+\/subsection\/[0-9]+/ { if (($4 >= 400) && ($4 < 1000) && ($6 < 100)) print $0 }'
echo'/base_path/section/456/subsection/99/''awk'开始{FS=“/”}/\/base_path\/section\/[0-9]+\/subsection\/[0-9]+/{如果($4>=400)&($4<1000)&($6<100))打印$0}'

这将打印示例路径。

AWK当然是一个很好的解决方案,但它比我希望的更详细,更不灵活。我认为它不适用于像“/some/path/01 title.ogg”这样的东西,例如。我应该补充一点,您的答案将适用于我当前的用例。我的主要问题是,我希望有一个解决方案能够更清楚地说明我的意图,比如说,“选择此数字在此范围内的文件,然后对其做些什么”。
/base_path/section/05/subsection/01000/*
echo '/base_path/section/456/subsection/99/' | awk 'BEGIN { FS = "/" } /\/base_path\/section\/[0-9]+\/subsection\/[0-9]+/ { if (($4 >= 400) && ($4 < 1000) && ($6 < 100)) print $0 }'