如何在java中从同一个正则表达式模式获得多个答案

如何在java中从同一个正则表达式模式获得多个答案,java,regex,Java,Regex,我的文件名为ART-123456-123_GIT.tif ^[^-]+-([^]+).-此正则表达式以ART-123456 ^[^-]+-([^-]+).-此正则表达式以123456 ^[^-]+-[^-]+-([^(]+).-这将输出为123 [^.]+。([^.]+).-这将输出为GIT 我想编写一个正则表达式模式来提取所有这4个输出 我试着用下面的方法 (^[^-]+-([^_]+).*)(^[^-]+-([^-]+).*)(^[^-]+-[^-]+-([^_]+).*)([^_]+.

我的文件名为
ART-123456-123_GIT.tif

  • ^[^-]+-([^]+).
    -此正则表达式以
    ART-123456
  • ^[^-]+-([^-]+).
    -此正则表达式以
    123456
  • ^[^-]+-[^-]+-([^(]+).
    -这将输出为
    123
  • [^.]+。([^.]+).
    -这将输出为
    GIT
我想编写一个正则表达式模式来提取所有这4个输出

我试着用下面的方法

(^[^-]+-([^_]+).*)(^[^-]+-([^-]+).*)(^[^-]+-[^-]+-([^_]+).*)([^_]+.([^.]+).*)
然后以组(0)组(1)的形式获取输出,但显示错误。我怎样才能做到这一点


我想将ART-123456123、GIT全部四个捕获到不同的捕获组中。

您可以使用以下表达式:

^([^-]+-([^-]+))-([^_]+)_([^.]+)
捕获的组:

Group 1.    0-10    `ART-123456`
Group 2.    4-10    `123456`
Group 3.    11-14   `123`
Group 4.    15-18   `GIT`

您可以试试。

您可以使用以下表达式:

^([^-]+-([^-]+))-([^_]+)_([^.]+)
捕获的组:

Group 1.    0-10    `ART-123456`
Group 2.    4-10    `123456`
Group 3.    11-14   `123`
Group 4.    15-18   `GIT`

您可以试试。

您需要更精确地确定可接受的名称格式。例如,
[A-Z]+-\d{6}-\d{3}{[A-Z]{3}.[A-Z]{3}
应与当前文件名匹配,如果需要,可以添加组以捕获文件的特定部分。但我不确定这是否是匹配所有可能文件名的格式。请澄清您希望在捕获组中捕获的内容。我希望捕获ART-123456123,GIT捕获组中的所有四个在一个捕获组中还是在四个不同的捕获组中?在四个不同的捕获组中,您需要更精确地了解可接受的名称格式。例如,
[A-Z]+-\d{6}-\d{3}{[A-Z]{3}.[A-Z]{3}
应与当前文件名匹配,如果需要,可以添加组以捕获文件的特定部分。但我不确定这是否是匹配所有可能文件名的格式。请澄清您希望在捕获组中捕获的内容。我希望在一个捕获组中捕获ART-123456123、GIT捕获组中的所有四个,或者在四个不同的捕获组中捕获?在四个不同的捕获组中