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

6rqinv9w  于 2023-08-08  发布在  Java
关注(0)|答案(1)|浏览(78)

我正在ImageJ中开发一个宏,它将循环一系列标准格式的图像,并将它们合并为两个不同的通道。我写了宏,但我需要它能够接受不同格式的整数作为文件名的一部分。
这是文件名格式。
图1:aSMA neut_Plate_D_p00_0_B01f00d0.TIF
图2:aSMA neut_Plate_D_p00_0_B01f00d1.TIF
B 01是组织对应的“孔”的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”。

vfwfrxfs

vfwfrxfs1#

我不确定它是否正确地理解了这个问题,即使在所有的评论之后,我发现它有点混乱。
也许你需要这样的东西?这里我在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));

相关问题