正则表达式在Java中识别前面有0的整数

问题描述 投票:0回答:1

我正在 ImageJ 中开发一个宏,它将循环遍历一系列具有标准格式的图像,并将它们作为两个不同的通道合并在一起。我已经编写了宏,但我需要它能够接受不同格式的整数作为文件名的一部分。

这是文件名格式。

图片1:aSMA neut_Plate_D_p00_0_B01f00d0.TIF

图片 2:aSMA neut_Plate_D_p00_0_B01f00d1.TIF

B01 是组织对应的“孔”的 ID。我需要一个可以接受“aSMA neut_Plate_D_p00_0_B01f00d1.TIF”和“aSMA neut_Plate_D_p00_0_B11f00d1.TIF”的脚本,无论数字前面有“0”。

这是到目前为止的代码。目录设置是我仍在研究的事情。

// Get directory of images
//inDir = getDirectory("*\aSMA neut.2022-12-05-22-40-09")

// Set output directory for merged images
//outDir = getDirectory("")

// For loop to go through all images

var well=9;
var image=5;

for (i = 1; i <= well; ++i) {
    for (p = 0; p <= image; ++p) {
        open("*/aSMA neut.2022-12-05-22-40-09/aSMA_neut_Plate_D_p00_0_B0" + i + "f0" + p + "d0.TIF"); // Will need to change i value to account for presence of 0 before single digits
        image1 = getTitle;
        open("*/aSMA neut.2022-12-05-22-40-09/aSMA_neut_Plate_D_p00_0_B0" + i + "f0" + p + "d1.TIF"); // Will need to change i value to account for presence of 0 before single digits
        image2 = getTitle;

        run("Merge Channels...", "c1=" + image1 + " c2=" + image2 + " create keep");
        saveAs("tif", "C:/Users/fgoot/Downloads/OneDrive_2023-07-24/aSMA neut.2022-12-05-22-40-09/merged/aSMA_neut_Plate_D_p00_0_B0" + i + "f0" + p + "d" + "_merged.tif");

        run("Close All");
    
        print(image1);
        print(image2);
        print(i);
    }
}

基本上,我需要一个“01”字符串才能被识别为“1”。

编辑:在示例中的文件名中的 B 后面添加了“0”。这适用于值 1-9,但是当它达到 10 或更多时,B 后面就没有“0”了。

java regex imagej
1个回答
0
投票

我不确定它是否正确理解了这个问题,即使在所有评论之后我发现它有点令人困惑。

也许您需要这样的东西?这里我在 0 后面加了一个问号,使其成为可选的。这也会匹配

011
但不匹配
001
。但也许这没问题,100 个文件对您来说是最多的。
open("*/aSMA neut.2022-12-05-22-40-09/aSMA_neut_Plate_D_p00_0_B0?" + i + "f0" + p + "d0.TIF");

您还可以使用

String.format("%02d", i)
生成精确匹配的字符串,如下所示:
open(String.format("*/aSMA neut.2022-12-05-22-40-09/aSMA_neut_Plate_D_p00_0_B%02df0%dd0.TIF", i, p));

© www.soinside.com 2019 - 2024. All rights reserved.