Java + regex 如何检查这样的字符串 "LOAD_filesourceB-01012008_000058.dat"的类型和数字(最后 6 位数字)

标签 java regex

如何通过正则表达式实现这样的要求?

我有一个字符串文件名列表。
LOAD_filesourceA-01012008-00001.dat
LOAD_filesourceB-01012008-00001.dat
LOAD_filesourceB-01012008-00003.dat
LOAD_filesourceA-01012008-00004.dat
LOAD_filesourceA-01012008-000055.dat
LOAD_filesourceB-01012008_000055.dat
...
LOAD_filesourceB-01012008_000058.dat
等等

加载每个文件后,该文件将被移动到存档目录中...并且我记录文件类型和加载编号(文件名中的最后 6 个字符)
我有2条信息: 1-我要加载的文件是A类型还是B类型 2- 最后加载的文件编号(整数) 基于这些,我想获取下一个文件的文件名,即具有相同的文件类型,并且加载编号(= .“.dat”部分之前的最后 6 位数字)应该是下一个可用编号。假设加载的是 12,那么我将搜索 13,如果不可用,则搜索 14、15 等......直到我处理该目录中的所有文件。

只要给定一个像“LOAD_filesourceB-01012008_000058.dat”这样的字符串,我就可以检查这是文件类型B,并且假设上次加载的文件编号是57,它满足编号58的要求。 (> 57 我的意思是)

最佳答案

LOAD_filesource(A|B)-[0-9]+-([0-9])+.dat

A 或 B 将最终位于组 1,即组 2 中的文件编号。然后将组 2 解析为十进制整数。

关于Java + regex 如何检查这样的字符串 "LOAD_filesourceB-01012008_000058.dat"的类型和数字(最后 6 位数字),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/858946/

相关文章:

正则表达式提取不在句子开头和两个相邻单词的大写单词

regex - JavaCC警告 "Regular expression choice : FOO can never be matched as : BAR"的解释和解决方案?

Python正则表达式,删除除连字符以外的所有标点符号用于unicode字符串

java - SQLite 数据库不存在 Android

java - 在java中, InetAddress.getLocalHost() 和 InetAddress.getByName ("127.0.0.1"之间有什么区别)

java - 运行 Netbeans 6.8 应用程序时出现 NoClassDefFoundError

MySQL - REGEX 从字符串和匹配词中搜索词应该是 alnum 或仅数字

java - Drools Planner 构造启发式 java.lang.ClassCastException

java - hibernate.cfg.xml 和 applicationContext.xml

MySQL 8 + 正则表达式字边界