使用Java中的正则表达式或最有效的方法解析下划线分隔的字段字符串

时间:2013-10-07 20:45:28

标签: java regex parsing

我的头衔可能有点误导。我可以轻松地手动解析字符串,但我正在寻找最快的方法来检测2个特定字段中的特定值。所以给出一个示例字符串:

XXX_X_999999_999999_99999999_99999999_X_X其中x = alpha,9是数字,我想确认字段5和6中的值(日期)是特定年份中的一个。

所以在第5场可能是20100101,我想看看年份是否与几年中的一年相匹配。第6场也是如此,但年份不同。我猜这可能是两种不同的表达方式吗?

我查看了一些解决方案,使用正则表达式扫描逗号分隔文件中的值,但改变检查似乎没有工作,因为我预期它会使用下划线(而不是专注于特定的字段,它似乎看着整个字符串)。

同样,我可以通过拆分字符串,然后检查这两个字段来做到这一点,但我希望能更快地做一些事情,只需动态验证(如果特定值是在那里就分析了一些这些字符串)字符串中的正确位置。

示例:

XXX_X_100000_200000_20100101_20100130_X_X

我希望将第一个日期(字段5)与2001年和2002年相匹配。

[编辑]

我应该注意到我对正则表达式很糟糕,我试图为我的目的修改的是:^([^,\ r \ n] *,){5}(2001 | 2002)

1 个答案:

答案 0 :(得分:0)

不要过度使用正则表达式。

分割字符串并传统解析它没有任何问题。

你当然也可以使用例如(\d\d\d\d)(\d\d)(\d\d)让正则表达式为您分配预先分配日期到YMD。尽管如此,如果某些内容应该是一个数字,请将其作为数字处理,而不是字符串。