regex - 自动查找文件名中的编号模式

标签 regex algorithm pattern-matching filenames

简介

我在配备显微镜的设施中工作。可以要求这些人生成样本的 4D 电影:例如在不同的 Z 位置拍摄 10 张图片,然后等待一定时间(下一个时间点)并重新拍摄 10 张切片。 可以要求他们为每个切片保存一个文件,并且他们使用明确的命名模式,例如 2009-11-03-experiment1-Z07-T42.tif。文件名编号以反射(reflect) Z 位置和时间点

问题

获得所有这些文件名后,如果知道文件名的主干模式,就可以使用 regex 模式提取 Z 和 T 值。我知道该怎么做。

我的问题是:您知道一种从文件名列表自动生成正则表达式模式的方法吗?例如,网上有一个很棒的工具可以做类似的事情:txt2re .

您将使用什么算法来解析所有文件名列表并生成最可能的正则表达式模式?

最佳答案

有一个名为 String::Diff 的 Perl 模块它能够为两个不同的字符串生成正则表达式。它给出的例子是

my $diff = String::Diff::diff_regexp('this is Perl', 'this is Ruby');
print "$diff\n";

输出:

 this\ is\ (?:Perl|Ruby)

也许您可以将成对的文件名输入此类内容以获得初始正则表达式。但是,这不会让您捕获数字等,因此它不会完全自动。获得差异后,您必须手动编辑或进行某种替换才能获得有效的最终正则表达式。

关于regex - 自动查找文件名中的编号模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1667435/

相关文章:

swift - 在 Swift switch 中提取值

Scala - 匹配选项组

regex - inotifywait - 排除正则表达式模式格式

regex - 如何将 vim 正则表达式替换命令转换为 sed 或 awk?

c - 如何在 C 中用连分数实现自然对数​​?

algorithm - 红黑树的应用

c++ - 给定这两个值的函数会产生第三个值?

java - Java 模式匹配的有效方法

ios - Swift 中的正则表达式?

c# - 查找第一个属性不是 'title' 的所有 <a> 标签