电话
400 9058 355
本文介绍如何在java中通过单个正则表达式或逻辑组合,同时匹配两类文件名:一类以1/2开头、后接pr+字母+数字的固定结构;另一类以字母s开头、总长恰好为5个字符的字符串。
在实际文件处理场景中,常需根据命名规则对不同来源的文件进行分类识别。题中需求包含两组模式:
第一组(原已实现):形如 1PRW12345 或 2PRZ32145,即:
第二组(新增需求):以 S 开头、总长度严格为5 的字符串,例如 SCA1W、SB1FC(注意:SB1FC 实际为5字符 ✅,而 S123 只有4字符 ❌,STOOLX 为6字符 ❌)
⚠️ 注意:S.{4}(答案中给出)虽能匹配“S开头后跟任意4字符”,但不保证总长为5(例如 S\n\t\r 也符合),且未限定字符类型(如是否允许小写、特殊符号)。更严谨的写法应明确字符集与长度约束。
String inputfield = "SCA1W"; // 可替换为任意待测字符串
// 合并两组规则:(1/2开头的PR模式) | (S开头+4个ASCII字母/数字)
String combinedRegex = "^[1-2]PR[K-Z]\\d{5}$|^S[A-Za-z0-9]{4}$";
Pattern pattern = Pattern.compile(combinedRegex);
Matcher matcher = pattern.matcher(inputfield);
boolean matchFound = matcher.find(); // 或用 matcher.matches() 更推荐(见下文说明)
if (matchFound) {
System.out.println("匹配成功,执行对应业务逻辑...");
// e.g., 文件解析、日志记录、路由分发等
}若未来需扩展更多模式(如增加 Txxx 系列),可采用策略模式封装各正则,或构建正则集合动态编译:
Listpatterns = Arrays.asList( "^[1-2]PR[K-Z]\\d{5}$", "^S[A-Za-z0-9]{4}$", "^T\\d{4}$" ); String fullRegex = String.join("|", patterns); Pattern pattern = Pat tern.compile(fullRegex);
综上,通过合理设计正则表达式并辅以锚点和字符集约束,即可健壮、高效地支持多类文件名的统一匹配判定。
邮箱:8955556@qq.com
Q Q:8955556
本文详解如何将Go官方present工具(用于生成HTML5...
PySNMP在不同版本中对SNMP错误状态(errorSta...
time.Sleep仅阻塞当前goroutine,其他gor...
PHPfopen()创建含特殊符号的文件名失败主因是操作系统...
WooCommerce中通过代码为分组产品动态聚合子商品的属...
io.ReadFull返回io.ErrUnexpectedE...
本文详解Yii2中控制器向视图传递ActiveRecord数...
本文详解为何通过wp_set_object_terms()为...
Pytest中使用@mock.patch类装饰器会导致补丁泄...
带缓冲的channel是并发安全的FIFO队列;make(c...