Java 带有2个下划线和3个段的文件名的正则表达式

Java 带有2个下划线和3个段的文件名的正则表达式,java,regex,regex-lookarounds,regex-group,Java,Regex,Regex Lookarounds,Regex Group,我需要一个regex表达式,用于从属性文件的文件列表中选择具有特定文件名格式的文件。 我需要选择文件名为以下文件格式的文件: <app_name>_<app_version>_<environment>.properties 文件名始终包含2个下划线。,可以是下划线之间的任何字符串。 例如,以下是可以选择的有效文件名: app1_1.0_prod1.properties app2_2_prod2.properties app_vers1_prod.prope

我需要一个regex表达式,用于从属性文件的文件列表中选择具有特定文件名格式的文件。
我需要选择文件名为以下文件格式的文件:

<app_name>_<app_version>_<environment>.properties
文件名始终包含2个下划线
,可以是下划线之间的任何字符串。
例如,以下是可以选择的有效文件名:

app1_1.0_prod1.properties
app2_2_prod2.properties
app_vers1_prod.properties
app-1_vers1_prod-2.properties
asd_efg_eee.properties
它可以是字母、数字、特殊字符或它们之间、下划线之间的组合。
请注意,文件名中只能有2下划线

除2下划线以外的任何内容都不是有效的文件名,将不会被选择,并且文件名应始终以2下划线分隔这3个部分
\u

以下是无效的文件名:

abc.properties
abc.123.efg.properties
as_1.efg.ddd.rr.properties
ee_rr.properties
_rr_.properties
我尝试了以下正则表达式:

[^_]*\\.[^_].properties  
但不起作用。也许这是错误的。我不知道该怎么做。 请帮助我创建此正则表达式。

谢谢

我相信
/^[^\uu]++\ u[^\ u]+\.属性$/应该满足您的要求:

const测试=[
“app1_1.0_prod1.properties”,
“app2_2_prod2.properties”,
“应用程序与产品属性”,
“asd_efg_eee.properties”,
“abc.properties”,
“abc.123.efg.properties”,
'as_1.efg.ddd.rr.properties',
“ee_rr.properties”,
“\u rr\uu.properties”
];
tests.forEach(test=>{
log(test,/^[^\u]+\+\[^\ u]+\.properties$/.test(test));

});我相信
/^[^\u]+\ u[^\ u]+\ u[^\ u]+\.属性$/
应该满足您的要求:

const测试=[
“app1_1.0_prod1.properties”,
“app2_2_prod2.properties”,
“应用程序与产品属性”,
“asd_efg_eee.properties”,
“abc.properties”,
“abc.123.efg.properties”,
'as_1.efg.ddd.rr.properties',
“ee_rr.properties”,
“\u rr\uu.properties”
];
tests.forEach(test=>{
log(test,/^[^\u]+\+\[^\ u]+\.properties$/.test(test));

});这应该行得通,因为每个部分基本上可以包括除下划线以外的任何字符:
/[^\uu]*.[^\ u]*.[^\ u]\.properties/

这应该行得通,因为每个部分基本上可以包括除下划线以外的任何字符:
/[^\u]*.[^\ u[^]\.properties/

这是Java还是Javascript?当前在Java中使用..这是Java还是Javascript?当前在Java中使用。。
[^_]*\\.[^_].properties