嗨,我正在为文件名验证编写一个正则表达式。组合来自不同论坛的部分,但没有正确的测试结果。下面是我想要实现的示例格式
格式:ABC<1区2>_DEF<6-7位数>_GHI<1区2区3>..xml示例: ABC2_DEF1234567_GHI3.xml
这里是用Java定义的正则表达式。
private static final String PATTERN = "ABC[1|2|3]+_DEF\\d[0-9]{6,7}+_GHI[1|2|3].xml$";发布于 2019-07-25 05:06:37
以下几点应该足够:
"(?i)abc[12]_def\d{6,7}_ghi[123]\.xml
注意使用?i标志来匹配大小写。您还可以使用Pattern.CASE_INSENSITIVE常量。
这个正则表达式与abc匹配,后面是1或2,后面是_def,后面是6-7位数,后面是_ghi,后面是1、2或3,扩展名为.xml。
发布于 2019-07-25 05:10:00
我的猜测是,您可能希望设计一个类似于:
^ABC[12]_DEF[0-9]{6,7}_GHI[1-3]\.xml$该表达式将在regex101.com的右上面板上解释,如果您希望探索/简化/修改它,那么在此链接中,您可以观察它如何与某些示例输入相匹配(如果您愿意)。
测试
import java.util.regex.Matcher;
import java.util.regex.Pattern;
final String regex = "^ABC[12]_DEF[0-9]{6,7}_GHI[1-3]\\.xml$";
final String string = "ABC2_DEF1234567_GHI3.xml\n"
+ "ABC<1|2>_DEF<6-7digits>_GHI<1|2|3>.xml";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}RegEx电路
jex.im可视化正则表达式:

https://stackoverflow.com/questions/57194640
复制相似问题